annotate libinterp/corefcn/graphics.cc @ 20083:6b7aee95c54c

Test directly for '|' character at front of drawnow "file". * graphics.cc (drawnow): Test directly for '|' character at front of drawnow "file". * __osmesa_print__.c: Test directly for '|' character at front of drawnow "file".
author Rik <rik@octave.org>
date Fri, 27 Feb 2015 16:29:14 -0800
parents 60fe3ef12bb0
children e814e202cd84
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
1 /*
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2
19898
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 19867
diff changeset
3 Copyright (C) 2007-2015 John W. Eaton
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
4
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
6
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6962
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6962
diff changeset
10 option) any later version.
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
11
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
15 for more details.
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
16
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6962
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6962
diff changeset
19 <http://www.gnu.org/licenses/>.
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
20
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
21 */
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
22
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
24 #include <config.h>
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
25 #endif
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
26
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
27 #include <cctype>
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
28 #include <cfloat>
7286
c0c6aa5afff4 [project @ 2007-12-11 16:52:56 by jwe]
jwe
parents: 7283
diff changeset
29 #include <cstdlib>
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
30 #include <ctime>
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
31
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
32 #include <algorithm>
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
33 #include <list>
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
34 #include <map>
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
35 #include <set>
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
36 #include <string>
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
37 #include <sstream>
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
38
13992
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
39 #include "cmd-edit.h"
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
40 #include "file-ops.h"
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
41 #include "file-stat.h"
13992
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
42 #include "oct-locbuf.h"
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
43 #include "singleton-cleanup.h"
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
44
15423
53d073233fa4 call more built-in functions directly
John W. Eaton <jwe@octave.org>
parents: 15220
diff changeset
45 #include "builtins.h"
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
46 #include "cutils.h"
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
47 #include "defun.h"
8560
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
48 #include "display.h"
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
49 #include "error.h"
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
50 #include "graphics.h"
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
51 #include "input.h"
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
52 #include "ov.h"
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
53 #include "oct-obj.h"
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
54 #include "oct-map.h"
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
55 #include "ov-fcn-handle.h"
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
56 #include "pager.h"
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
57 #include "parse.h"
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
58 #include "toplev.h"
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
59 #include "txt-eng-ft.h"
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
60 #include "unwind-prot.h"
18801
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
61 #include "octave-default-image.h"
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
62
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
63 // forward declarations
9238
0ae2b6617005 Use display information from the root object to compute bounding boxes
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9185
diff changeset
64 static octave_value xget (const graphics_handle& h, const caseless_str& name);
0ae2b6617005 Use display information from the root object to compute bounding boxes
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9185
diff changeset
65
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
66 static void
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
67 gripe_set_invalid (const std::string& pname)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
68 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
69 error ("set: invalid value for %s property", pname.c_str ());
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
70 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
71
9584
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
72 // Check to see that PNAME matches just one of PNAMES uniquely.
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
73 // Return the full name of the match, or an empty caseless_str object
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
74 // if there is no match, or the match is ambiguous.
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
75
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
76 static caseless_str
9585
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
77 validate_property_name (const std::string& who, const std::string& what,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
78 const std::set<std::string>& pnames,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
79 const caseless_str& pname)
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
80 {
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
81 size_t len = pname.length ();
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
82 std::set<std::string> matches;
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
83
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
84 for (std::set<std::string>::const_iterator p = pnames.begin ();
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
85 p != pnames.end (); p++)
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
86 {
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
87 if (pname.compare (*p, len))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
88 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
89 if (len == p->length ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
90 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
91 // Exact match.
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
92 return pname;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
93 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
94
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
95 matches.insert (*p);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
96 }
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
97 }
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
98
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
99 size_t num_matches = matches.size ();
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
100
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
101 if (num_matches == 0)
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
102 {
9585
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
103 error ("%s: unknown %s property %s",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
104 who.c_str (), what.c_str (), pname.c_str ());
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
105 }
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
106 else if (num_matches > 1)
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
107 {
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
108 string_vector sv (matches);
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
109
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
110 std::ostringstream os;
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
111
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
112 sv.list_in_columns (os);
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
113
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
114 std::string match_list = os.str ();
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
115
9585
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
116 error ("%s: ambiguous %s property name %s; possible matches:\n\n%s",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
117 who.c_str (), what.c_str (), pname.c_str (), match_list.c_str ());
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
118 }
9584
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
119 else if (num_matches == 1)
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
120 {
9584
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
121 // Exact match was handled above.
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
122
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
123 std::string possible_match = *(matches.begin ());
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
124
9584
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
125 warning_with_id ("Octave:abbreviated-property-match",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
126 "%s: allowing %s to match %s property %s",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
127 who.c_str (), pname.c_str (), what.c_str (),
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
128 possible_match.c_str ());
9584
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
129
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
130 return possible_match;
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
131 }
9584
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
132
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
133 return caseless_str ();
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
134 }
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
135
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
136 static Matrix
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
137 jet_colormap (void)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
138 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
139 Matrix cmap (64, 3, 0.0);
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
140
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
141 // Produce X in the same manner as linspace so that
15707
d803cd07f31a Tweak C++ implementation of jet colormap to produce exactly the same result as jet.m
Rik <rik@octave.org>
parents: 15467
diff changeset
142 // jet_colormap and jet.m produce *exactly* the same result.
d803cd07f31a Tweak C++ implementation of jet colormap to produce exactly the same result as jet.m
Rik <rik@octave.org>
parents: 15467
diff changeset
143 double delta = 1.0 / 63.0;
d803cd07f31a Tweak C++ implementation of jet colormap to produce exactly the same result as jet.m
Rik <rik@octave.org>
parents: 15467
diff changeset
144
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
145 for (octave_idx_type i = 0; i < 64; i++)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
146 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
147 // This is the jet colormap. It would be nice to be able
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
148 // to feval the jet function but since there is a static
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
149 // property object that includes a colormap_property
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
150 // object, we need to initialize this before main is even
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
151 // called, so calling an interpreted function is not
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
152 // possible.
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
153
15707
d803cd07f31a Tweak C++ implementation of jet colormap to produce exactly the same result as jet.m
Rik <rik@octave.org>
parents: 15467
diff changeset
154 double x = i*delta;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
155
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
156 if (x >= 3.0/8.0 && x < 5.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
157 cmap(i,0) = 4.0 * x - 3.0/2.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
158 else if (x >= 5.0/8.0 && x < 7.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
159 cmap(i,0) = 1.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
160 else if (x >= 7.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
161 cmap(i,0) = -4.0 * x + 9.0/2.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
162
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
163 if (x >= 1.0/8.0 && x < 3.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
164 cmap(i,1) = 4.0 * x - 1.0/2.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
165 else if (x >= 3.0/8.0 && x < 5.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
166 cmap(i,1) = 1.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
167 else if (x >= 5.0/8.0 && x < 7.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
168 cmap(i,1) = -4.0 * x + 7.0/2.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
169
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
170 if (x < 1.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
171 cmap(i,2) = 4.0 * x + 1.0/2.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
172 else if (x >= 1.0/8.0 && x < 3.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
173 cmap(i,2) = 1.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
174 else if (x >= 3.0/8.0 && x < 5.0/8.0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
175 cmap(i,2) = -4.0 * x + 5.0/2.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
176 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
177
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
178 return cmap;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
179 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
180
8560
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
181 static double
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
182 default_screendepth (void)
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
183 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
184 return display_info::depth ();
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
185 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
186
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
187 static Matrix
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
188 default_screensize (void)
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
189 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
190 Matrix retval (1, 4, 1.0);
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
191
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
192 retval(2) = display_info::width ();
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
193 retval(3) = display_info::height ();
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
194
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
195 return retval;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
196 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
197
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
198 static double
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
199 default_screenpixelsperinch (void)
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
200 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
201 return (display_info::x_dpi () + display_info::y_dpi ()) / 2;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
202 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
203
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
204 static Matrix
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
205 default_colororder (void)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
206 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
207 Matrix retval (7, 3, 0.0);
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
208
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
209 retval(0,2) = 1.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
210
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
211 retval(1,1) = 0.5;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
212
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
213 retval(2,0) = 1.0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
214
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
215 retval(3,1) = 0.75;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
216 retval(3,2) = 0.75;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
217
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
218 retval(4,0) = 0.75;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
219 retval(4,2) = 0.75;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
220
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
221 retval(5,0) = 0.75;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
222 retval(5,1) = 0.75;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
223
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
224 retval(6,0) = 0.25;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
225 retval(6,1) = 0.25;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
226 retval(6,2) = 0.25;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
227
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
228 return retval;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
229 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
230
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
231 static Matrix
13757
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
232 default_lim (bool logscale = false)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
233 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
234 Matrix m (1, 2, 0);
13757
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
235
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
236 if (logscale)
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
237 {
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
238 m(0) = 0.1;
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
239 m(1) = 1.0;
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
240 }
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
241 else
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
242 m(1) = 1;
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
243
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
244 return m;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
245 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
246
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
247 static Matrix
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
248 default_data (void)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
249 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
250 Matrix retval (1, 2);
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
251
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
252 retval(0) = 0;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
253 retval(1) = 1;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
254
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
255 return retval;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
256 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
257
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
258 static Matrix
18801
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
259 default_image_cdata (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
260 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
261 Matrix m (64, 64, 0.0);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
262 int i = 0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
263 for (int col = 0; col < 64; col++)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
264 for (int row = 0; row < 64; row++)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
265 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
266 m(col,row) = static_cast<double> (default_im_data[i]);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
267 i++;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
268 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
269
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
270 return m;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
271 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
272
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
273 static Matrix
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
274 default_surface_xdata (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
275 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
276 Matrix m (3, 3, 0.0);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
277 for (int col = 0; col < 3; col++)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
278 for (int row = 0; row < 3; row++)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
279 m(row,col) = col+1;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
280
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
281 return m;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
282 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
283
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
284 static Matrix
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
285 default_surface_ydata (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
286 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
287 Matrix m (3, 3, 0.0);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
288 for (int row = 0; row < 3; row++)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
289 for (int col = 0; col < 3; col++)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
290 m(row,col) = row+1;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
291
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
292 return m;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
293 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
294
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
295 static Matrix
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
296 default_surface_zdata (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
297 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
298 Matrix m (3, 3, 0.0);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
299 for (int row = 0; row < 3; row++)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
300 m(row,row) = 1.0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
301 return m;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
302 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
303
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
304 static Matrix
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
305 default_surface_cdata (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
306 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
307 return default_surface_zdata ();
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
308 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
309
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
310 static Matrix
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
311 default_patch_faces (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
312 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
313 Matrix m (1, 3, 1.0);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
314 m(1) = 2.0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
315 m(2) = 3.0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
316 return m;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
317 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
318
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
319 static Matrix
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
320 default_patch_vertices (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
321 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
322 Matrix m (3, 2, 0);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
323 m(1) = 1.0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
324 m(3) = 1.0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
325 m(4) = 1.0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
326 return m;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
327 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
328
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
329 static Matrix
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
330 default_patch_xdata (void)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
331 {
19095
82773ee8119a Fix ambiguous Matrix initialization from csetdf972b9d080a
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19091
diff changeset
332 Matrix m (3, 1, 0.0);
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
333 m(1) = 1.0;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
334 return m;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
335 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
336
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
337 static Matrix
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
338 default_patch_ydata (void)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
339 {
19095
82773ee8119a Fix ambiguous Matrix initialization from csetdf972b9d080a
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19091
diff changeset
340 Matrix m (3, 1, 1.0);
82773ee8119a Fix ambiguous Matrix initialization from csetdf972b9d080a
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19091
diff changeset
341 m(2) = 0.0;
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
342 return m;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
343 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
344
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
345 static Matrix
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
346 default_axes_position (void)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
347 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
348 Matrix m (1, 4, 0.0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
349 m(0) = 0.13;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
350 m(1) = 0.11;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
351 m(2) = 0.775;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
352 m(3) = 0.815;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
353 return m;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
354 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
355
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
356 static Matrix
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
357 default_axes_outerposition (void)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
358 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
359 Matrix m (1, 4, 0.0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
360 m(2) = m(3) = 1.0;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
361 return m;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
362 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
363
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
364 static Matrix
18801
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
365 default_axes_view (void)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
366 {
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
367 Matrix m (1, 2, 0.0);
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
368 m(1) = 90.0;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
369 return m;
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
370 }
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
371
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18711
diff changeset
372 static Matrix
8599
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
373 default_axes_tick (void)
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
374 {
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
375 Matrix m (1, 6, 0.0);
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
376 m(0) = 0.0;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
377 m(1) = 0.2;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
378 m(2) = 0.4;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
379 m(3) = 0.6;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
380 m(4) = 0.8;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
381 m(5) = 1.0;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
382 return m;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
383 }
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
384
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
385 static Matrix
8740
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
386 default_axes_ticklength (void)
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
387 {
14022
de90542b7afc Return retval(1) before retval(0) to avoid re-sizing call on retval.
Rik <octave@nomad.inbox5.com>
parents: 14021
diff changeset
388 Matrix m (1, 2, 0.0);
de90542b7afc Return retval(1) before retval(0) to avoid re-sizing call on retval.
Rik <octave@nomad.inbox5.com>
parents: 14021
diff changeset
389 m(0) = 0.01;
8740
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
390 m(1) = 0.025;
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
391 return m;
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
392 }
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
393
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
394 static Matrix
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
395 default_figure_position (void)
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
396 {
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
397 Matrix m (1, 4, 0.0);
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
398 m(0) = 300;
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
399 m(1) = 200;
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
400 m(2) = 560;
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
401 m(3) = 420;
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
402 return m;
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
403 }
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
404
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
405 static Matrix
8599
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
406 default_figure_papersize (void)
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
407 {
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
408 Matrix m (1, 2, 0.0);
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
409 m(0) = 8.5;
8961
6b87f2f34fdd graphics.cc: Fix default "papersize" property value.
Ben Abbott <bpabbott@mac.com>
parents: 8944
diff changeset
410 m(1) = 11.0;
8599
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
411 return m;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
412 }
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
413
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
414 static Matrix
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
415 default_figure_paperposition (void)
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
416 {
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
417 Matrix m (1, 4, 0.0);
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
418 m(0) = 0.25;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
419 m(1) = 2.50;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
420 m(2) = 8.00;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
421 m(3) = 6.00;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
422 return m;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
423 }
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
424
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
425 static Matrix
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
426 default_control_position (void)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
427 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
428 Matrix retval (1, 4, 0.0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
429
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
430 retval(0) = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
431 retval(1) = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
432 retval(2) = 80;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
433 retval(3) = 30;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
434
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
435 return retval;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
436 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
437
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
438 static Matrix
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
439 default_control_sliderstep (void)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
440 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
441 Matrix retval (1, 2, 0.0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
442
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
443 retval(0) = 0.01;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
444 retval(1) = 0.1;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
445
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
446 return retval;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
447 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
448
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
449 static Matrix
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
450 default_panel_position (void)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
451 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
452 Matrix retval (1, 4, 0.0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
453
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
454 retval(0) = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
455 retval(1) = 0;
14022
de90542b7afc Return retval(1) before retval(0) to avoid re-sizing call on retval.
Rik <octave@nomad.inbox5.com>
parents: 14021
diff changeset
456 retval(2) = 0.5;
de90542b7afc Return retval(1) before retval(0) to avoid re-sizing call on retval.
Rik <octave@nomad.inbox5.com>
parents: 14021
diff changeset
457 retval(3) = 0.5;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
458
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
459 return retval;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
460 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
461
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
462 static double
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
463 convert_font_size (double font_size, const caseless_str& from_units,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
464 const caseless_str& to_units, double parent_height = 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
465 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
466 // Simple case where from_units == to_units
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
467
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
468 if (from_units.compare (to_units))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
469 return font_size;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
470
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
471 // Converts the given fontsize using the following transformation:
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
472 // <old_font_size> => points => <new_font_size>
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
473
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
474 double points_size = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
475 double res = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
476
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
477 if (from_units.compare ("points"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
478 points_size = font_size;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
479 else
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
480 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
481 res = xget (0, "screenpixelsperinch").double_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
482
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
483 if (from_units.compare ("pixels"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
484 points_size = font_size * 72.0 / res;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
485 else if (from_units.compare ("inches"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
486 points_size = font_size * 72.0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
487 else if (from_units.compare ("centimeters"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
488 points_size = font_size * 72.0 / 2.54;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
489 else if (from_units.compare ("normalized"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
490 points_size = font_size * parent_height * 72.0 / res;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
491 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
492
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
493 double new_font_size = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
494
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
495 if (to_units.compare ("points"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
496 new_font_size = points_size;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
497 else
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
498 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
499 if (res <= 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
500 res = xget (0, "screenpixelsperinch").double_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
501
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
502 if (to_units.compare ("pixels"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
503 new_font_size = points_size * res / 72.0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
504 else if (to_units.compare ("inches"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
505 new_font_size = points_size / 72.0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
506 else if (to_units.compare ("centimeters"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
507 new_font_size = points_size * 2.54 / 72.0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
508 else if (to_units.compare ("normalized"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
509 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
510 // Avoid setting font size to (0/0) = NaN
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
511
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
512 if (parent_height > 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
513 new_font_size = points_size * res / (parent_height * 72.0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
514 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
515 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
516
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
517 return new_font_size;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
518 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
519
13804
4f112bebd474 use correct method to get window position for fltk
John W. Eaton <jwe@octave.org>
parents: 13801
diff changeset
520 static Matrix
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
521 convert_position (const Matrix& pos, const caseless_str& from_units,
13799
760e4e88dba3 convert units for figure positions
John W. Eaton <jwe@octave.org>
parents: 13757
diff changeset
522 const caseless_str& to_units, const Matrix& parent_dim)
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
523 {
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
524 Matrix retval (1, pos.numel ());
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
525 double res = 0;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
526 bool is_rectangle = (pos.numel () == 4);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
527 bool is_2d = (pos.numel () == 2);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
528
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
529 if (from_units.compare ("pixels"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
530 retval = pos;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
531 else if (from_units.compare ("normalized"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
532 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
533 retval(0) = pos(0) * parent_dim(0) + 1;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
534 retval(1) = pos(1) * parent_dim(1) + 1;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
535 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
536 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
537 retval(2) = pos(2) * parent_dim(0);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
538 retval(3) = pos(3) * parent_dim(1);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
539 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
540 else if (! is_2d)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
541 retval(2) = 0;
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
542 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
543 else if (from_units.compare ("characters"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
544 {
9238
0ae2b6617005 Use display information from the root object to compute bounding boxes
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9185
diff changeset
545 if (res <= 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
546 res = xget (0, "screenpixelsperinch").double_value ();
8599
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
547
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
548 double f = 0.0;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
549
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
550 // FIXME: this assumes the system font is Helvetica 10pt
8599
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
551 // (for which "x" requires 6x12 pixels at 74.951 pixels/inch)
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
552 f = 12.0 * res / 74.951;
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
553
b4fb0a52b15e Improve default property compatibility.
Ben Abbott <bpabbott@mac.com>
parents: 8560
diff changeset
554 if (f > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
555 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
556 retval(0) = 0.5 * pos(0) * f;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
557 retval(1) = pos(1) * f;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
558 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
559 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
560 retval(2) = 0.5 * pos(2) * f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
561 retval(3) = pos(3) * f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
562 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
563 else if (! is_2d)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
564 retval(2) = 0;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
565 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
566 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
567 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
568 {
9238
0ae2b6617005 Use display information from the root object to compute bounding boxes
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9185
diff changeset
569 if (res <= 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
570 res = xget (0, "screenpixelsperinch").double_value ();
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
571
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
572 double f = 0.0;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
573
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
574 if (from_units.compare ("points"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
575 f = res / 72.0;
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
576 else if (from_units.compare ("inches"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
577 f = res;
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
578 else if (from_units.compare ("centimeters"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
579 f = res / 2.54;
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
580
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
581 if (f > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
582 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
583 retval(0) = pos(0) * f + 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
584 retval(1) = pos(1) * f + 1;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
585 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
586 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
587 retval(2) = pos(2) * f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
588 retval(3) = pos(3) * f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
589 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
590 else if (! is_2d)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
591 retval(2) = 0;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
592 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
593 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
594
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
595 if (! to_units.compare ("pixels"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
596 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
597 if (to_units.compare ("normalized"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
598 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
599 retval(0) = (retval(0) - 1) / parent_dim(0);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
600 retval(1) = (retval(1) - 1) / parent_dim(1);
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
601 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
602 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
603 retval(2) /= parent_dim(0);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
604 retval(3) /= parent_dim(1);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
605 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
606 else if (! is_2d)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
607 retval(2) = 0;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
608 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
609 else if (to_units.compare ("characters"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
610 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
611 if (res <= 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
612 res = xget (0, "screenpixelsperinch").double_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
613
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
614 double f = 0.0;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
615
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
616 f = 12.0 * res / 74.951;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
617
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
618 if (f > 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
619 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
620 retval(0) = 2 * retval(0) / f;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
621 retval(1) = retval(1) / f;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
622 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
623 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
624 retval(2) = 2 * retval(2) / f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
625 retval(3) = retval(3) / f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
626 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
627 else if (! is_2d)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
628 retval(2) = 0;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
629 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
630 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
631 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
632 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
633 if (res <= 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
634 res = xget (0, "screenpixelsperinch").double_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
635
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
636 double f = 0.0;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
637
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
638 if (to_units.compare ("points"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
639 f = res / 72.0;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
640 else if (to_units.compare ("inches"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
641 f = res;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
642 else if (to_units.compare ("centimeters"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
643 f = res / 2.54;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
644
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
645 if (f > 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
646 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
647 retval(0) = (retval(0) - 1) / f;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
648 retval(1) = (retval(1) - 1) / f;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
649 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
650 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
651 retval(2) /= f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
652 retval(3) /= f;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
653 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
654 else if (! is_2d)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
655 retval(2) = 0;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
656 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
657 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
658 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
659 else if (! is_rectangle && ! is_2d)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
660 retval(2) = 0;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
661
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
662 return retval;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
663 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
664
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
665 static Matrix
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
666 convert_text_position (const Matrix& pos, const text::properties& props,
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
667 const caseless_str& from_units,
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
668 const caseless_str& to_units)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
669 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
670 graphics_object go = gh_manager::get_object (props.get___myhandle__ ());
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
671 graphics_object ax = go.get_ancestor ("axes");
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
672
13876
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
673 Matrix retval;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
674
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
675 if (ax.valid_object ())
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
676 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
677 const axes::properties& ax_props =
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
678 dynamic_cast<const axes::properties&> (ax.get_properties ());
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
679 graphics_xform ax_xform = ax_props.get_transform ();
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
680 bool is_rectangle = (pos.numel () == 4);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
681 Matrix ax_bbox = ax_props.get_boundingbox (true),
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
682 ax_size = ax_bbox.extract_n (0, 2, 1, 2);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
683
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
684 if (from_units.compare ("data"))
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
685 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
686 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
687 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
688 ColumnVector v1 = ax_xform.transform (pos(0), pos(1), 0),
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
689 v2 = ax_xform.transform (pos(0) + pos(2),
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
690 pos(1) + pos(3), 0);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
691
13876
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
692 retval.resize (1, 4);
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
693
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
694 retval(0) = v1(0) - ax_bbox(0) + 1;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
695 retval(1) = ax_bbox(1) + ax_bbox(3) - v1(1) + 1;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
696 retval(2) = v2(0) - v1(0);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
697 retval(3) = v1(1) - v2(1);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
698 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
699 else
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
700 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
701 ColumnVector v = ax_xform.transform (pos(0), pos(1), pos(2));
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
702
13876
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
703 retval.resize (1, 3);
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
704
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
705 retval(0) = v(0) - ax_bbox(0) + 1;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
706 retval(1) = ax_bbox(1) + ax_bbox(3) - v(1) + 1;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
707 retval(2) = 0;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
708 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
709 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
710 else
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
711 retval = convert_position (pos, from_units, "pixels", ax_size);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
712
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
713 if (! to_units.compare ("pixels"))
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
714 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
715 if (to_units.compare ("data"))
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
716 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
717 if (is_rectangle)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
718 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
719 ColumnVector v1, v2;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
720 v1 = ax_xform.untransform (
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
721 retval(0) + ax_bbox(0) - 1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
722 ax_bbox(1) + ax_bbox(3) - retval(1) + 1);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
723 v2 = ax_xform.untransform (
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
724 retval(0) + retval(2) + ax_bbox(0) - 1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
725 ax_bbox(1) + ax_bbox(3) - (retval(1) + retval(3)) + 1);
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
726
13876
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
727 retval.resize (1, 4);
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
728
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
729 retval(0) = v1(0);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
730 retval(1) = v1(1);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
731 retval(2) = v2(0) - v1(0);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
732 retval(3) = v2(1) - v1(1);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
733 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
734 else
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
735 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
736 ColumnVector v;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
737 v = ax_xform.untransform (
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
738 retval(0) + ax_bbox(0) - 1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
739 ax_bbox(1) + ax_bbox(3) - retval(1) + 1);
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
740
13876
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
741 retval.resize (1, 3);
c1b072ef1fc7 avoid writing outside bounds of matrix
John W. Eaton <jwe@octave.org>
parents: 13849
diff changeset
742
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
743 retval(0) = v(0);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
744 retval(1) = v(1);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
745 retval(2) = v(2);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
746 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
747 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
748 else
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
749 retval = convert_position (retval, "pixels", to_units, ax_size);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
750 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
751 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
752
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
753 return retval;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
754 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
755
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
756 // This function always returns the screensize in pixels
13804
4f112bebd474 use correct method to get window position for fltk
John W. Eaton <jwe@octave.org>
parents: 13801
diff changeset
757 static Matrix
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
758 screen_size_pixels (void)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
759 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
760 graphics_object obj = gh_manager::get_object (0);
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
761 Matrix sz = obj.get ("screensize").matrix_value ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
762 return convert_position (sz, obj.get ("units").string_value (), "pixels",
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
763 sz.extract_n (0, 2, 1, 2)).extract_n (0, 2, 1, 2);
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
764 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
765
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
766 static void
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
767 convert_cdata_2 (bool is_scaled, bool is_real, double clim_0, double clim_1,
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
768 const double *cmapv, double x, octave_idx_type lda,
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
769 octave_idx_type nc, octave_idx_type i, double *av)
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
770 {
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
771 if (is_scaled)
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
772 x = xround ((nc - 1) * (x - clim_0) / (clim_1 - clim_0));
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
773 else if (is_real)
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
774 x = xround (x - 1);
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
775
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
776 if (xisnan (x))
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
777 {
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
778 av[i] = x;
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
779 av[i+lda] = x;
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
780 av[i+2*lda] = x;
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
781 }
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
782 else
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
783 {
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
784 if (x < 0)
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
785 x = 0;
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
786 else if (x >= nc)
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
787 x = (nc - 1);
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
788
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
789 octave_idx_type idx = static_cast<octave_idx_type> (x);
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
790
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
791 av[i] = cmapv[idx];
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
792 av[i+lda] = cmapv[idx+nc];
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
793 av[i+2*lda] = cmapv[idx+2*nc];
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
794 }
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
795 }
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
796
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
797 template <class T>
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
798 void
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
799 convert_cdata_1 (bool is_scaled, bool is_real, double clim_0, double clim_1,
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
800 const double *cmapv, const T *cv, octave_idx_type lda,
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
801 octave_idx_type nc, double *av)
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
802 {
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
803 for (octave_idx_type i = 0; i < lda; i++)
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
804 convert_cdata_2 (is_scaled, is_real,
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
805 clim_0, clim_1, cmapv, cv[i], lda, nc, i, av);
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
806 }
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
807
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
808 static octave_value
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
809 convert_cdata (const base_properties& props, const octave_value& cdata,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
810 bool is_scaled, int cdim)
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
811 {
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
812 dim_vector dv (cdata.dims ());
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
813
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
814 // TrueColor data doesn't require conversion
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
815 if (dv.length () == cdim && dv(cdim-1) == 3)
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
816 return cdata;
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
817
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
818 Matrix cmap (1, 3, 0.0);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
819 Matrix clim (1, 2, 0.0);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
820
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
821 graphics_object go = gh_manager::get_object (props.get___myhandle__ ());
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
822 graphics_object fig = go.get_ancestor ("figure");
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
823
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
824 if (fig.valid_object ())
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
825 {
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
826 Matrix _cmap = fig.get (caseless_str ("colormap")).matrix_value ();
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
827
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
828 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
829 cmap = _cmap;
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
830 }
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
831
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
832 if (is_scaled)
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
833 {
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
834 graphics_object ax = go.get_ancestor ("axes");
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
835
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
836 if (ax.valid_object ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
837 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
838 Matrix _clim = ax.get (caseless_str ("clim")).matrix_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
839
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
840 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
841 clim = _clim;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
842 }
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
843 }
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
844
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
845 dv.resize (cdim);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
846 dv(cdim-1) = 3;
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
847
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
848 NDArray a (dv);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
849
8075
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
850 octave_idx_type lda = a.numel () / static_cast<octave_idx_type> (3);
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
851 octave_idx_type nc = cmap.rows ();
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
852
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
853 double *av = a.fortran_vec ();
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
854 const double *cmapv = cmap.data ();
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
855
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
856 double clim_0 = clim(0);
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
857 double clim_1 = clim(1);
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
858
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
859 // FIXME: There is a lot of processing time spent just on data conversion
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
860 // both here in graphics.cc and again in gl-render.cc. There must
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
861 // be room for improvement! Here a macro expands to a templated
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
862 // function which in turn calls another function (covert_cdata_2).
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
863 // And in gl-render.cc (opengl_renderer::draw_image), only GLfloat
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
864 // is supported anyways so there is another double for loop across
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
865 // height and width to convert all of the input data to GLfloat.
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
866
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
867 #define CONVERT_CDATA_1(ARRAY_T, VAL_FN, IS_REAL) \
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
868 do \
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
869 { \
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
870 ARRAY_T tmp = cdata. VAL_FN ## array_value (); \
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
871 \
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
872 convert_cdata_1 (is_scaled, IS_REAL, clim_0, clim_1, cmapv, \
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
873 tmp.data (), lda, nc, av); \
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
874 } \
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
875 while (0)
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
876
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
877 if (cdata.is_uint8_type ())
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
878 CONVERT_CDATA_1 (uint8NDArray, uint8_, false);
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
879 else if (cdata.is_uint16_type ())
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
880 CONVERT_CDATA_1 (uint16NDArray, uint16_, false);
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
881 else if (cdata.is_double_type ())
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
882 CONVERT_CDATA_1 (NDArray, , true);
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
883 else if (cdata.is_single_type ())
18838
44f0d1a53ead Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents: 18835
diff changeset
884 CONVERT_CDATA_1 (FloatNDArray, float_, true);
18877
d57a83f2d73e Preserve image class in cdata (bug #41240).
Rik <rik@octave.org>
parents: 18857
diff changeset
885 else if (cdata.is_bool_type ())
d57a83f2d73e Preserve image class in cdata (bug #41240).
Rik <rik@octave.org>
parents: 18857
diff changeset
886 CONVERT_CDATA_1 (boolNDArray, bool_, false);
10923
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
887 else
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
888 error ("unsupported type for cdata (= %s)", cdata.type_name ().c_str ());
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
889
4c1ffaed8caa graphics.cc (convert_cdata): avoid data conversion for entire cdata array at once
John W. Eaton <jwe@octave.org>
parents: 10922
diff changeset
890 #undef CONVERT_CDATA_1
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
891
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
892 return octave_value (a);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
893 }
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
894
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
895 template<class T>
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
896 static void
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
897 get_array_limits (const Array<T>& m, double& emin, double& emax,
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
898 double& eminp, double& emaxp)
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
899 {
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
900 const T *data = m.data ();
8075
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
901 octave_idx_type n = m.numel ();
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
902
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
903 for (octave_idx_type i = 0; i < n; i++)
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
904 {
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
905 double e = double (data[i]);
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
906
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
907 // Don't need to test for NaN here as NaN>x and NaN<x is always false
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
908 if (! xisinf (e))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
909 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
910 if (e < emin)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
911 emin = e;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
912
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
913 if (e > emax)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
914 emax = e;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
915
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
916 if (e > 0 && e < eminp)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
917 eminp = e;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
918
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
919 if (e < 0 && e > emaxp)
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
920 emaxp = e;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
921 }
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
922 }
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
923 }
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
924
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
925 static bool
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
926 lookup_object_name (const caseless_str& name, caseless_str& go_name,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
927 caseless_str& rest)
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
928 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
929 int len = name.length ();
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
930 int offset = 0;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
931 bool result = false;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
932
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
933 if (len >= 4)
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
934 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
935 caseless_str pfx = name.substr (0, 4);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
936
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
937 if (pfx.compare ("axes") || pfx.compare ("line")
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
938 || pfx.compare ("text"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
939 offset = 4;
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
940 else if (len >= 5)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
941 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
942 pfx = name.substr (0, 5);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
943
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
944 if (pfx.compare ("image") || pfx.compare ("patch"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
945 offset = 5;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
946 else if (len >= 6)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
947 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
948 pfx = name.substr (0, 6);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
949
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
950 if (pfx.compare ("figure") || pfx.compare ("uimenu"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
951 offset = 6;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
952 else if (len >= 7)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
953 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
954 pfx = name.substr (0, 7);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
955
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
956 if (pfx.compare ("surface") || pfx.compare ("hggroup")
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
957 || pfx.compare ("uipanel"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
958 offset = 7;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
959 else if (len >= 9)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
960 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
961 pfx = name.substr (0, 9);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
962
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
963 if (pfx.compare ("uicontrol")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
964 || pfx.compare ("uitoolbar"))
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
965 offset = 9;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
966 else if (len >= 10)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
967 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
968 pfx = name.substr (0, 10);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
969
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
970 if (pfx.compare ("uipushtool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
971 offset = 10;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
972 else if (len >= 12)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
973 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
974 pfx = name.substr (0, 12);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
975
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
976 if (pfx.compare ("uitoggletool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
977 offset = 12;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
978 else if (len >= 13)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
979 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
980 pfx = name.substr (0, 13);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
981
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
982 if (pfx.compare ("uicontextmenu"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
983 offset = 13;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
984 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
985 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
986 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
987 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
988 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
989 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
990 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
991
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
992 if (offset > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
993 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
994 go_name = pfx;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
995 rest = name.substr (offset);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
996 result = true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
997 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
998 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
999
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1000 return result;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1001 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1002
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1003 static base_graphics_object*
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1004 make_graphics_object_from_type (const caseless_str& type,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1005 const graphics_handle& h = graphics_handle (),
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1006 const graphics_handle& p = graphics_handle ())
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1007 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1008 base_graphics_object *go = 0;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1009
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1010 if (type.compare ("figure"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1011 go = new figure (h, p);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1012 else if (type.compare ("axes"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1013 go = new axes (h, p);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1014 else if (type.compare ("line"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1015 go = new line (h, p);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1016 else if (type.compare ("text"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1017 go = new text (h, p);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1018 else if (type.compare ("image"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1019 go = new image (h, p);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1020 else if (type.compare ("patch"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1021 go = new patch (h, p);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1022 else if (type.compare ("surface"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1023 go = new surface (h, p);
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
1024 else if (type.compare ("hggroup"))
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
1025 go = new hggroup (h, p);
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
1026 else if (type.compare ("uimenu"))
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
1027 go = new uimenu (h, p);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1028 else if (type.compare ("uicontrol"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1029 go = new uicontrol (h, p);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1030 else if (type.compare ("uipanel"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1031 go = new uipanel (h, p);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1032 else if (type.compare ("uicontextmenu"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1033 go = new uicontextmenu (h, p);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1034 else if (type.compare ("uitoolbar"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1035 go = new uitoolbar (h, p);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1036 else if (type.compare ("uipushtool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1037 go = new uipushtool (h, p);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1038 else if (type.compare ("uitoggletool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1039 go = new uitoggletool (h, p);
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1040 return go;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1041 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1042
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
1043 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
1044
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1045 bool
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1046 base_property::set (const octave_value& v, bool do_run, bool do_notify_toolkit)
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
1047 {
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1048 if (do_set (v))
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
1049 {
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1050
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
1051 // Notify graphics toolkit.
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1052 if (id >= 0 && do_notify_toolkit)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1053 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1054 graphics_object go = gh_manager::get_object (parent);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1055 if (go)
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1056 go.update (id);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1057 }
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1058
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1059 // run listeners
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1060 if (do_run && ! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1061 run_listeners (POSTSET);
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1062
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1063 return true;
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
1064 }
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1065
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1066 return false;
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
1067 }
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
1068
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
1069
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
1070 void
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1071 base_property::run_listeners (listener_mode mode)
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1072 {
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1073 const octave_value_list& l = listeners[mode];
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1074
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1075 for (int i = 0; i < l.length (); i++)
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1076 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1077 gh_manager::execute_listener (parent, l(i));
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1078
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1079 if (error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1080 break;
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1081 }
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1082 }
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1083
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1084 radio_values::radio_values (const std::string& opt_string)
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
1085 : default_val (), possible_vals ()
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
1086 {
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1087 size_t beg = 0;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1088 size_t len = opt_string.length ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1089 bool done = len == 0;
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1090
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1091 while (! done)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1092 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1093 size_t end = opt_string.find ('|', beg);
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1094
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1095 if (end == std::string::npos)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1096 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1097 end = len;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1098 done = true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1099 }
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1100
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1101 std::string t = opt_string.substr (beg, end-beg);
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1102
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1103 // Might want more error checking here...
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1104 if (t[0] == '{')
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1105 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1106 t = t.substr (1, t.length () - 2);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1107 default_val = t;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1108 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1109 else if (beg == 0) // ensure default value
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1110 default_val = t;
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1111
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1112 possible_vals.insert (t);
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1113
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1114 beg = end + 1;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1115 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1116 }
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1117
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1118 std::string
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1119 radio_values::values_as_string (void) const
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1120 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1121 std::string retval;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1122 for (std::set<caseless_str>::const_iterator it = possible_vals.begin ();
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1123 it != possible_vals.end (); it++)
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1124 {
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1125 if (retval.empty ())
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1126 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1127 if (*it == default_value ())
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1128 retval = "{" + *it + "}";
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1129 else
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1130 retval = *it;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1131 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1132 else
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1133 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1134 if (*it == default_value ())
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1135 retval += " | {" + *it + "}";
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1136 else
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1137 retval += " | " + *it;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1138 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1139 }
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1140
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1141 if (! retval.empty ())
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1142 retval = "[ " + retval + " ]";
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1143
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1144 return retval;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1145 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1146
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1147 Cell
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1148 radio_values::values_as_cell (void) const
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1149 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1150 octave_idx_type i = 0;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1151 Cell retval (nelem (), 1);
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1152 for (std::set<caseless_str>::const_iterator it = possible_vals.begin ();
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1153 it != possible_vals.end (); it++)
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1154 retval(i++) = std::string (*it);
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1155 return retval;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1156 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
1157
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1158 bool
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1159 color_values::str2rgb (const std::string& str_arg)
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1160 {
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1161 bool retval = true;
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1162
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1163 double tmp_rgb[3] = {0, 0, 0};
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1164
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
1165 std::string str = str_arg;
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
1166 unsigned int len = str.length ();
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1167
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6898
diff changeset
1168 std::transform (str.begin (), str.end (), str.begin (), tolower);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6898
diff changeset
1169
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1170 if (str.compare (0, len, "blue", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1171 tmp_rgb[2] = 1;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1172 else if (str.compare (0, len, "black", 0, len) == 0
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1173 || str.compare (0, len, "k", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1174 tmp_rgb[0] = tmp_rgb[1] = tmp_rgb[2] = 0;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1175 else if (str.compare (0, len, "red", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1176 tmp_rgb[0] = 1;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1177 else if (str.compare (0, len, "green", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1178 tmp_rgb[1] = 1;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1179 else if (str.compare (0, len, "yellow", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1180 tmp_rgb[0] = tmp_rgb[1] = 1;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1181 else if (str.compare (0, len, "magenta", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1182 tmp_rgb[0] = tmp_rgb[2] = 1;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1183 else if (str.compare (0, len, "cyan", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1184 tmp_rgb[1] = tmp_rgb[2] = 1;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1185 else if (str.compare (0, len, "white", 0, len) == 0
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1186 || str.compare (0, len, "w", 0, len) == 0)
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1187 tmp_rgb[0] = tmp_rgb[1] = tmp_rgb[2] = 1;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1188 else
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6733
diff changeset
1189 retval = false;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
1190
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1191 if (retval)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1192 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1193 for (int i = 0; i < 3; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1194 xrgb(i) = tmp_rgb[i];
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1195 }
6563
7a65c1a09ec3 [project @ 2007-04-23 19:26:17 by jwe]
jwe
parents: 6509
diff changeset
1196
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1197 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1198 }
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1199
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1200 bool
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1201 color_property::do_set (const octave_value& val)
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1202 {
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1203 if (val.is_string ())
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1204 {
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1205 std::string s = val.string_value ();
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1206
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1207 if (! s.empty ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1208 {
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1209 std::string match;
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1210
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1211 if (radio_val.contains (s, match))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1212 {
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1213 if (current_type != radio_t || match != current_val)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1214 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1215 if (s.length () != match.length ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1216 warning_with_id ("Octave:abbreviated-property-match",
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1217 "%s: allowing %s to match %s value %s",
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1218 "set", s.c_str (), get_name ().c_str (),
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1219 match.c_str ());
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1220 current_val = match;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1221 current_type = radio_t;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1222 return true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1223 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1224 }
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1225 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1226 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1227 color_values col (s);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1228 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1229 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1230 if (current_type != color_t || col != color_val)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1231 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1232 color_val = col;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1233 current_type = color_t;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1234 return true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1235 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1236 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1237 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1238 error ("invalid value for color property \"%s\" (value = %s)",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1239 get_name ().c_str (), s.c_str ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1240 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1241 }
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1242 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1243 error ("invalid value for color property \"%s\"",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1244 get_name ().c_str ());
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1245 }
9311
868fbeb2e365 allow ranges and other matrices in set
Jaroslav Hajek <highegg@gmail.com>
parents: 9238
diff changeset
1246 else if (val.is_numeric_type ())
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1247 {
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1248 Matrix m = val.matrix_value ();
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1249
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1250 if (m.numel () == 3)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1251 {
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
1252 color_values col (m(0), m(1), m(2));
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1253 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1254 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1255 if (current_type != color_t || col != color_val)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1256 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1257 color_val = col;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1258 current_type = color_t;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1259 return true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1260 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1261 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1262 }
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1263 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1264 error ("invalid value for color property \"%s\"",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1265 get_name ().c_str ());
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1266 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1267 else
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1268 error ("invalid value for color property \"%s\"",
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1269 get_name ().c_str ());
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1270
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1271 return false;
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1272 }
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
1273
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1274 bool
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1275 double_radio_property::do_set (const octave_value& val)
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1276 {
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1277 if (val.is_string ())
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1278 {
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1279 std::string s = val.string_value ();
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1280 std::string match;
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1281
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1282 if (! s.empty () && radio_val.contains (s, match))
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1283 {
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13211
diff changeset
1284 if (current_type != radio_t || match != current_val)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1285 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1286 if (s.length () != match.length ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1287 warning_with_id ("Octave:abbreviated-property-match",
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1288 "%s: allowing %s to match %s value %s",
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1289 "set", s.c_str (), get_name ().c_str (),
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1290 match.c_str ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1291 current_val = match;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1292 current_type = radio_t;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1293 return true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1294 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1295 }
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1296 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1297 error ("invalid value for double_radio property \"%s\"",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1298 get_name ().c_str ());
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1299 }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1300 else if (val.is_scalar_type () && val.is_real_type ())
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1301 {
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1302 double new_dval = val.double_value ();
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1303
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1304 if (current_type != double_t || new_dval != dval)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1305 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1306 dval = new_dval;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1307 current_type = double_t;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1308 return true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1309 }
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1310 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1311 else
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1312 error ("invalid value for double_radio property \"%s\"",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1313 get_name ().c_str ());
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1314
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1315 return false;
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1316 }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7843
diff changeset
1317
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1318 bool
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1319 array_property::validate (const octave_value& v)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1320 {
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1321 bool xok = false;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1322
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1323 // check value type
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1324 if (type_constraints.size () > 0)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1325 {
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1326 if (type_constraints.find (v.class_name ()) != type_constraints.end ())
15069
7a3957ca99c3 Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15017
diff changeset
1327 xok = true;
7a3957ca99c3 Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15017
diff changeset
1328
7a3957ca99c3 Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15017
diff changeset
1329 // check if complex is allowed (it's also of class "double", so
7a3957ca99c3 Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15017
diff changeset
1330 // checking that alone is not enough to ensure real type)
7a3957ca99c3 Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15017
diff changeset
1331 if (type_constraints.find ("real") != type_constraints.end ()
7a3957ca99c3 Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15017
diff changeset
1332 && v.is_complex_type ())
7a3957ca99c3 Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15017
diff changeset
1333 xok = false;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1334 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1335 else
9181
86ae7e50dc5d graphics.cc (array_property::validate): require value to be numeric, not necessarily double
John W. Eaton <jwe@octave.org>
parents: 9064
diff changeset
1336 xok = v.is_numeric_type ();
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1337
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1338 if (xok)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1339 {
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1340 if (size_constraints.size () == 0)
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1341 return true;
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1342
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1343 dim_vector vdims = v.dims ();
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1344 int vlen = vdims.length ();
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1345
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1346 xok = false;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1347
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1348 // check dimensional size constraints until a match is found
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1349 for (std::list<dim_vector>::const_iterator it = size_constraints.begin ();
20068
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
1350 ! xok && it != size_constraints.end (); ++it)
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1351 {
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1352 dim_vector itdims = (*it);
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1353
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1354 if (itdims.length () == vlen)
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1355 {
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1356 xok = true;
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1357
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1358 for (int i = 0; xok && i < vlen; i++)
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1359 {
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1360 if (itdims(i) > 0)
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1361 {
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1362 if (itdims(i) != vdims(i))
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1363 xok = false;
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1364 }
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1365 else if (v.is_empty ())
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1366 break;
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1367 }
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1368 }
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
1369 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1370 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1371
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1372 return xok;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1373 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1374
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1375 bool
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1376 array_property::is_equal (const octave_value& v) const
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1377 {
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1378 if (data.type_name () == v.type_name ())
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1379 {
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1380 if (data.dims () == v.dims ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1381 {
8075
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
1382
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
1383 #define CHECK_ARRAY_EQUAL(T,F,A) \
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1384 { \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1385 if (data.numel () == 1) \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1386 return data.F ## scalar_value () == \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1387 v.F ## scalar_value (); \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1388 else \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1389 { \
8075
a028a5960e18 Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents: 8063
diff changeset
1390 /* Keep copy of array_value to allow sparse/bool arrays */ \
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1391 /* that are converted, to not be deallocated early */ \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1392 const A m1 = data.F ## array_value (); \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1393 const T* d1 = m1.data (); \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1394 const A m2 = v.F ## array_value (); \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1395 const T* d2 = m2.data ();\
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1396 \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1397 bool flag = true; \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1398 \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1399 for (int i = 0; flag && i < data.numel (); i++) \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1400 if (d1[i] != d2[i]) \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1401 flag = false; \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1402 \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1403 return flag; \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1404 } \
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1405 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1406
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
1407 if (data.is_double_type () || data.is_bool_type ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1408 CHECK_ARRAY_EQUAL (double, , NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1409 else if (data.is_single_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1410 CHECK_ARRAY_EQUAL (float, float_, FloatNDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1411 else if (data.is_int8_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1412 CHECK_ARRAY_EQUAL (octave_int8, int8_, int8NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1413 else if (data.is_int16_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1414 CHECK_ARRAY_EQUAL (octave_int16, int16_, int16NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1415 else if (data.is_int32_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1416 CHECK_ARRAY_EQUAL (octave_int32, int32_, int32NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1417 else if (data.is_int64_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1418 CHECK_ARRAY_EQUAL (octave_int64, int64_, int64NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1419 else if (data.is_uint8_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1420 CHECK_ARRAY_EQUAL (octave_uint8, uint8_, uint8NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1421 else if (data.is_uint16_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1422 CHECK_ARRAY_EQUAL (octave_uint16, uint16_, uint16NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1423 else if (data.is_uint32_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1424 CHECK_ARRAY_EQUAL (octave_uint32, uint32_, uint32NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1425 else if (data.is_uint64_type ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1426 CHECK_ARRAY_EQUAL (octave_uint64, uint64_, uint64NDArray)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1427 }
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1428 }
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1429
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1430 return false;
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1431 }
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1432
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1433 void
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1434 array_property::get_data_limits (void)
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1435 {
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1436 xmin = xminp = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
1437 xmax = xmaxp = -octave_Inf;
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1438
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1439 if (! data.is_empty ())
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1440 {
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1441 if (data.is_integer_type ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1442 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1443 if (data.is_int8_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1444 get_array_limits (data.int8_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1445 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1446 else if (data.is_uint8_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1447 get_array_limits (data.uint8_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1448 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1449 else if (data.is_int16_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1450 get_array_limits (data.int16_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1451 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1452 else if (data.is_uint16_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1453 get_array_limits (data.uint16_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1454 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1455 else if (data.is_int32_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1456 get_array_limits (data.int32_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1457 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1458 else if (data.is_uint32_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1459 get_array_limits (data.uint32_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1460 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1461 else if (data.is_int64_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1462 get_array_limits (data.int64_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1463 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1464 else if (data.is_uint64_type ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1465 get_array_limits (data.uint64_array_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1466 xmin, xmax, xminp, xmaxp);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1467 }
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1468 else
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
1469 get_array_limits (data.array_value (), xmin, xmax, xminp, xmaxp);
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1470 }
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1471 }
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
1472
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1473 bool
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1474 handle_property::do_set (const octave_value& v)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1475 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1476 double dv = v.double_value ();
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1477
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1478 if (! error_state)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1479 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1480 graphics_handle gh = gh_manager::lookup (dv);
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1481
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1482 if (xisnan (gh.value ()) || gh.ok ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1483 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1484 if (current_val != gh)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1485 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1486 current_val = gh;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1487 return true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1488 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1489 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1490 else
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1491 error ("set: invalid graphics handle (= %g) for property \"%s\"",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1492 dv, get_name ().c_str ());
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1493 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1494 else
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1495 error ("set: invalid graphics handle for property \"%s\"",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1496 get_name ().c_str ());
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1497
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8062
diff changeset
1498 return false;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1499 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1500
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1501 Matrix
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1502 children_property::do_get_children (bool return_hidden) const
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1503 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1504 Matrix retval (children_list.size (), 1);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1505 octave_idx_type k = 0;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1506
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1507 graphics_object go = gh_manager::get_object (0);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1508
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1509 root_figure::properties& props =
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1510 dynamic_cast<root_figure::properties&> (go.get_properties ());
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1511
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1512 if (! props.is_showhiddenhandles ())
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1513 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1514 for (const_children_list_iterator p = children_list.begin ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1515 p != children_list.end (); p++)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1516 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1517 graphics_handle kid = *p;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1518
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1519 if (gh_manager::is_handle_visible (kid))
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1520 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1521 if (! return_hidden)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1522 retval(k++) = *p;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1523 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1524 else if (return_hidden)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1525 retval(k++) = *p;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1526 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1527
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1528 retval.resize (k, 1);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1529 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1530 else
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1531 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1532 for (const_children_list_iterator p = children_list.begin ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1533 p != children_list.end (); p++)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1534 retval(k++) = *p;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1535 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1536
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1537 return retval;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1538 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1539
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1540 void
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1541 children_property::do_delete_children (bool clear)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1542 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1543 for (children_list_iterator p = children_list.begin ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1544 p != children_list.end (); p++)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1545 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1546 graphics_object go = gh_manager::get_object (*p);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1547
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1548 if (go.valid_object ())
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1549 gh_manager::free (*p);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1550
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1551 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1552
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1553 if (clear)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1554 children_list.clear ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1555 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
1556
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1557 bool
7367
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1558 callback_property::validate (const octave_value& v) const
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1559 {
7367
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1560 // case 1: function handle
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1561 // case 2: cell array with first element being a function handle
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1562 // case 3: string corresponding to known function name
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1563 // case 4: evaluatable string
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1564 // case 5: empty matrix
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1565
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1566 if (v.is_function_handle ())
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1567 return true;
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1568 else if (v.is_string ())
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1569 // complete validation will be done at execution-time
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1570 return true;
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1571 else if (v.is_cell () && v.length () > 0
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
1572 && (v.rows () == 1 || v.columns () == 1)
7367
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1573 && v.cell_value ()(0).is_function_handle ())
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1574 return true;
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1575 else if (v.is_empty ())
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1576 return true;
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1577
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1578 return false;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1579 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1580
13324
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1581 // If TRUE, we are executing any callback function, or the functions it
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1582 // calls. Used to determine handle visibility inside callback
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1583 // functions.
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1584 static bool executing_callback = false;
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1585
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1586 void
7367
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1587 callback_property::execute (const octave_value& data) const
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1588 {
13323
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1589 unwind_protect frame;
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1590
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1591 // We are executing the callback function associated with this
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1592 // callback property. When set to true, we avoid recursive calls to
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1593 // callback routines.
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1594 frame.protect_var (executing);
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1595
13324
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1596 // We are executing a callback function, so allow handles that have
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1597 // their handlevisibility property set to "callback" to be visible.
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1598 frame.protect_var (executing_callback);
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1599
13323
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1600 if (! executing)
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1601 {
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1602 executing = true;
13324
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
1603 executing_callback = true;
13323
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1604
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1605 if (callback.is_defined () && ! callback.is_empty ())
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1606 gh_manager::execute_callback (get_parent (), callback, data);
de081abd32c6 don't execute graphics handle callback functions recursively
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1607 }
7824
adb520646d7e Fix execution of callback strings and allow execution of callback by name.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7822
diff changeset
1608 }
adb520646d7e Fix execution of callback strings and allow execution of callback by name.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7822
diff changeset
1609
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1610 // Used to cache dummy graphics objects from which dynamic
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1611 // properties can be cloned.
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1612 static std::map<caseless_str, graphics_object> dprop_obj_map;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1613
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1614 property
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1615 property::create (const std::string& name, const graphics_handle& h,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1616 const caseless_str& type, const octave_value_list& args)
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1617 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1618 property retval;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1619
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1620 if (type.compare ("string"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1621 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1622 std::string val = (args.length () > 0 ? args(0).string_value () : "");
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1623
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1624 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1625 retval = property (new string_property (name, h, val));
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1626 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1627 else if (type.compare ("any"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1628 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1629 octave_value val = args.length () > 0 ? args(0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1630 : octave_value (Matrix ());
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1631
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1632 retval = property (new any_property (name, h, val));
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1633 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1634 else if (type.compare ("radio"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1635 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1636 if (args.length () > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1637 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1638 std::string vals = args(0).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1639
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1640 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1641 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1642 retval = property (new radio_property (name, h, vals));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1643
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1644 if (args.length () > 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1645 retval.set (args(1));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1646 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1647 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1648 error ("addproperty: invalid argument for radio property, expected a string value");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1649 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1650 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1651 error ("addproperty: missing possible values for radio property");
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1652 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1653 else if (type.compare ("double"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1654 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1655 double d = (args.length () > 0 ? args(0).double_value () : 0);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1656
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1657 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1658 retval = property (new double_property (name, h, d));
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1659 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1660 else if (type.compare ("handle"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1661 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1662 double hh = (args.length () > 0 ? args(0).double_value () : octave_NaN);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1663
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1664 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1665 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1666 graphics_handle gh (hh);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1667
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1668 retval = property (new handle_property (name, h, gh));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1669 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1670 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1671 else if (type.compare ("boolean"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1672 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1673 retval = property (new bool_property (name, h, false));
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1674
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1675 if (args.length () > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1676 retval.set (args(0));
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1677 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1678 else if (type.compare ("data"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1679 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1680 retval = property (new array_property (name, h, Matrix ()));
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1681
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1682 if (args.length () > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1683 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1684 retval.set (args(0));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1685
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1686 // FIXME: additional argument could define constraints,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1687 // but is this really useful?
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1688 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1689 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1690 else if (type.compare ("color"))
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1691 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1692 color_values cv (0, 0, 0);
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1693 radio_values rv;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1694
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1695 if (args.length () > 1)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1696 rv = radio_values (args(1).string_value ());
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1697
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1698 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1699 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1700 retval = property (new color_property (name, h, cv, rv));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1701
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1702 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1703 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1704 if (args.length () > 0 && ! args(0).is_empty ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1705 retval.set (args(0));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1706 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1707 retval.set (rv.default_value ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1708 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1709 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1710 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1711 else
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1712 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1713 caseless_str go_name, go_rest;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1714
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1715 if (lookup_object_name (type, go_name, go_rest))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1716 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1717 graphics_object go;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1718
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1719 std::map<caseless_str, graphics_object>::const_iterator it =
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1720 dprop_obj_map.find (go_name);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1721
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1722 if (it == dprop_obj_map.end ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1723 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1724 base_graphics_object *bgo =
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1725 make_graphics_object_from_type (go_name);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1726
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1727 if (bgo)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1728 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1729 go = graphics_object (bgo);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1730
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1731 dprop_obj_map[go_name] = go;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1732 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1733 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1734 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1735 go = it->second;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1736
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1737 if (go.valid_object ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1738 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1739 property prop = go.get_properties ().get_property (go_rest);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1740
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1741 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1742 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1743 retval = prop.clone ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1744
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1745 retval.set_parent (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1746 retval.set_name (name);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1747
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1748 if (args.length () > 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1749 retval.set (args(0));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1750 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1751 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1752 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1753 error ("addproperty: invalid object type (= %s)",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1754 go_name.c_str ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1755 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1756 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1757 error ("addproperty: unsupported type for dynamic property (= %s)",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1758 type.c_str ());
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1759 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
1760
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1761 return retval;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1762 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1763
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1764 static void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1765 finalize_r (const graphics_handle& h)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1766 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1767 graphics_object go = gh_manager::get_object (h);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1768
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1769 if (go)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1770 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1771 Matrix children = go.get_properties ().get_all_children ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1772
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1773 for (int k = 0; k < children.numel (); k++)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1774 finalize_r (children(k));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1775
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1776 go.finalize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1777 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1778 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1779
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1780 static void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1781 initialize_r (const graphics_handle& h)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1782 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1783 graphics_object go = gh_manager::get_object (h);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1784
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1785 if (go)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1786 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1787 Matrix children = go.get_properties ().get_all_children ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1788
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1789 go.initialize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1790
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1791 for (int k = 0; k < children.numel (); k++)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1792 initialize_r (children(k));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1793 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1794 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1795
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1796 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1797 figure::properties::set_toolkit (const graphics_toolkit& b)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1798 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1799 if (toolkit)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1800 finalize_r (get___myhandle__ ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1801
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1802 toolkit = b;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1803 __graphics_toolkit__ = b.get_name ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1804 __plot_stream__ = Matrix ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1805
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1806 if (toolkit)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1807 initialize_r (get___myhandle__ ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1808
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1809 mark_modified ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1810 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1811
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1812 void
20074
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1813 figure::properties::set___mouse_mode__ (const octave_value& val_arg)
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1814 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1815 if (! error_state)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1816 {
20074
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1817 std::string direction = "in";
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1818
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1819 octave_value val = val_arg;
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1820
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1821 if (val.is_string ())
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1822 {
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1823 std::string modestr = val.string_value ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1824
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1825 if (modestr == "zoom in")
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1826 {
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1827 val = modestr = "zoom";
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1828 direction = "in";
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1829 }
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1830 else if (modestr == "zoom out")
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1831 {
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1832 val = modestr = "zoom";
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1833 direction = "out";
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1834 }
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1835
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1836 if (__mouse_mode__.set (val, true))
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1837 {
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1838 std::string mode = __mouse_mode__.current_value ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1839
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1840 octave_scalar_map pm = get___pan_mode__ ().scalar_map_value ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1841 pm.setfield ("Enable", mode == "pan" ? "on" : "off");
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1842 set___pan_mode__ (pm);
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1843
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1844 octave_scalar_map rm = get___rotate_mode__ ().scalar_map_value ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1845 rm.setfield ("Enable", mode == "rotate" ? "on" : "off");
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1846 set___rotate_mode__ (rm);
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1847
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1848 octave_scalar_map zm = get___zoom_mode__ ().scalar_map_value ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1849 zm.setfield ("Enable", mode == "zoom" ? "on" : "off");
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1850 zm.setfield ("Direction", direction);
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1851 set___zoom_mode__ (zm);
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1852
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1853 mark_modified ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1854 }
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1855 else if (modestr == "zoom")
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1856 {
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1857 octave_scalar_map zm = get___zoom_mode__ ().scalar_map_value ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1858 std::string curr_direction
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1859 = zm.getfield ("Direction").string_value ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1860
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1861 if (direction != curr_direction)
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1862 {
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1863 zm.setfield ("Direction", direction);
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1864 set___zoom_mode__ (zm);
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1865
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1866 mark_modified ();
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1867 }
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
1868 }
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1869 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1870 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1871 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
1872
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
1873 // ---------------------------------------------------------------------
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1874
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1875 void
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
1876 property_list::set (const caseless_str& name, const octave_value& val)
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1877 {
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1878 size_t offset = 0;
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1879
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1880 size_t len = name.length ();
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1881
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1882 if (len > 4)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1883 {
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
1884 caseless_str pfx = name.substr (0, 4);
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1885
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1886 if (pfx.compare ("axes") || pfx.compare ("line")
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1887 || pfx.compare ("text"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1888 offset = 4;
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1889 else if (len > 5)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1890 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1891 pfx = name.substr (0, 5);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1892
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1893 if (pfx.compare ("image") || pfx.compare ("patch"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1894 offset = 5;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1895 else if (len > 6)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1896 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1897 pfx = name.substr (0, 6);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1898
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
1899 if (pfx.compare ("figure") || pfx.compare ("uimenu"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1900 offset = 6;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1901 else if (len > 7)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1902 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1903 pfx = name.substr (0, 7);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1904
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1905 if (pfx.compare ("surface") || pfx.compare ("hggroup")
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1906 || pfx.compare ("uipanel"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1907 offset = 7;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1908 else if (len > 9)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1909 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1910 pfx = name.substr (0, 9);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1911
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1912 if (pfx.compare ("uicontrol")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1913 || pfx.compare ("uitoolbar"))
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1914 offset = 9;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1915 else if (len > 10)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1916 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1917 pfx = name.substr (0, 10);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1918
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1919 if (pfx.compare ("uipushtool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1920 offset = 10;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1921 else if (len > 12)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1922 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1923 pfx = name.substr (0, 12);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1924
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1925 if (pfx.compare ("uitoogletool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1926 offset = 12;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1927 else if (len > 13)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1928 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1929 pfx = name.substr (0, 13);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1930
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1931 if (pfx.compare ("uicontextmenu"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1932 offset = 13;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1933 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1934 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1935 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1936 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1937 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1938 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1939 }
6681
0458599c50d7 [project @ 2007-06-01 03:33:21 by jwe]
jwe
parents: 6678
diff changeset
1940
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
1941 if (offset > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1942 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1943 // FIXME: should we validate property names and values here?
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1944
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1945 std::string pname = name.substr (offset);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1946
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1947 std::transform (pfx.begin (), pfx.end (), pfx.begin (), tolower);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1948 std::transform (pname.begin (), pname.end (), pname.begin (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1949 tolower);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1950
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1951 bool has_property = false;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1952 if (pfx == "axes")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1953 has_property = axes::properties::has_core_property (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1954 else if (pfx == "line")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1955 has_property = line::properties::has_core_property (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1956 else if (pfx == "text")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1957 has_property = text::properties::has_core_property (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1958 else if (pfx == "image")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1959 has_property = image::properties::has_core_property (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1960 else if (pfx == "patch")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1961 has_property = patch::properties::has_core_property (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1962 else if (pfx == "figure")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1963 has_property = figure::properties::has_core_property (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1964 else if (pfx == "surface")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1965 has_property = surface::properties::has_core_property (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1966 else if (pfx == "hggroup")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1967 has_property = hggroup::properties::has_core_property (pname);
11283
58f175d39a7a GUI file functions
Kai Habel <kai.habel@gmx.de>
parents: 11259
diff changeset
1968 else if (pfx == "uimenu")
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
1969 has_property = uimenu::properties::has_core_property (pname);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1970 else if (pfx == "uicontrol")
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1971 has_property = uicontrol::properties::has_core_property (pname);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1972 else if (pfx == "uipanel")
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
1973 has_property = uipanel::properties::has_core_property (pname);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1974 else if (pfx == "uicontextmenu")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1975 has_property = uicontextmenu::properties::has_core_property (pname);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1976 else if (pfx == "uitoolbar")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1977 has_property = uitoolbar::properties::has_core_property (pname);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1978 else if (pfx == "uipushtool")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
1979 has_property = uipushtool::properties::has_core_property (pname);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1980
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1981 if (has_property)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1982 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1983 bool remove = false;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1984 if (val.is_string ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1985 {
16312
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
1986 std::string tval = val.string_value ();
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
1987
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
1988 remove = (tval.compare ("remove") == 0);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1989 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1990
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1991 pval_map_type& pval_map = plist_map[pfx];
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1992
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1993 if (remove)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1994 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1995 pval_map_iterator p = pval_map.find (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1996
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1997 if (p != pval_map.end ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1998 pval_map.erase (p);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
1999 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2000 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2001 pval_map[pname] = val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2002 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2003 else
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14325
diff changeset
2004 error ("invalid %s property '%s'", pfx.c_str (), pname.c_str ());
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2005 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2006 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2007
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2008 if (! error_state && offset == 0)
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2009 error ("invalid default property specification");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2010 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2011
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2012 octave_value
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2013 property_list::lookup (const caseless_str& name) const
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2014 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2015 octave_value retval;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2016
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2017 size_t offset = 0;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2018
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2019 size_t len = name.length ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2020
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2021 if (len > 4)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2022 {
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2023 caseless_str pfx = name.substr (0, 4);
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2024
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2025 if (pfx.compare ("axes") || pfx.compare ("line")
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2026 || pfx.compare ("text"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2027 offset = 4;
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2028 else if (len > 5)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2029 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2030 pfx = name.substr (0, 5);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2031
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2032 if (pfx.compare ("image") || pfx.compare ("patch"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2033 offset = 5;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2034 else if (len > 6)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2035 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2036 pfx = name.substr (0, 6);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2037
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
2038 if (pfx.compare ("figure") || pfx.compare ("uimenu"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2039 offset = 6;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2040 else if (len > 7)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2041 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2042 pfx = name.substr (0, 7);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2043
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2044 if (pfx.compare ("surface") || pfx.compare ("hggroup")
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2045 || pfx.compare ("uipanel"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2046 offset = 7;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2047 else if (len > 9)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2048 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2049 pfx = name.substr (0, 9);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2050
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2051 if (pfx.compare ("uicontrol")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2052 || pfx.compare ("uitoolbar"))
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2053 offset = 9;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2054 else if (len > 10)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2055 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2056 pfx = name.substr (0, 10);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2057
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2058 if (pfx.compare ("uipushtool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2059 offset = 10;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2060 else if (len > 12)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2061 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2062 pfx = name.substr (0, 12);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2063
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2064 if (pfx.compare ("uitoggletool"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2065 offset = 12;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2066 else if (len > 13)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2067 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2068 pfx = name.substr (0, 13);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2069
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2070 if (pfx.compare ("uicontextmenu"))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2071 offset = 13;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2072 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2073 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
2074 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2075 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2076 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2077 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2078 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2079
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2080 if (offset > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2081 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2082 std::string pname = name.substr (offset);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2083
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2084 std::transform (pfx.begin (), pfx.end (), pfx.begin (), tolower);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2085 std::transform (pname.begin (), pname.end (), pname.begin (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2086 tolower);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2087
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2088 plist_map_const_iterator p = find (pfx);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2089
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2090 if (p != end ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2091 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2092 const pval_map_type& pval_map = p->second;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2093
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2094 pval_map_const_iterator q = pval_map.find (pname);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2095
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2096 if (q != pval_map.end ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2097 retval = q->second;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2098 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2099 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2100 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2101
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2102 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2103 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2104
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
2105 octave_scalar_map
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2106 property_list::as_struct (const std::string& prefix_arg) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2107 {
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
2108 octave_scalar_map m;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2109
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2110 for (plist_map_const_iterator p = begin (); p != end (); p++)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2111 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2112 std::string prefix = prefix_arg + p->first;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2113
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2114 const pval_map_type pval_map = p->second;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2115
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2116 for (pval_map_const_iterator q = pval_map.begin ();
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2117 q != pval_map.end ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2118 q++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2119 m.assign (prefix + q->first, q->second);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2120 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2121
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
2122 return m;
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2123 }
6432
5bec61ae1576 [project @ 2007-03-23 02:19:10 by jwe]
jwe
parents: 6425
diff changeset
2124
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2125 // Set properties given as a cs-list of name, value pairs.
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2126
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2127 void
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2128 graphics_object::set (const octave_value_list& args)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2129 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2130 int nargin = args.length ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2131
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2132 if (nargin == 0)
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
2133 error ("graphics_object::set: Nothing to set");
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2134 else if (nargin % 2 == 0)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2135 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2136 for (int i = 0; i < nargin; i += 2)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2137 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2138 caseless_str name = args(i).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2139
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2140 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2141 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2142 octave_value val = args(i+1);
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2143
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2144 set_value_or_default (name, val);
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2145
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2146 if (error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2147 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2148 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2149 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2150 error ("set: expecting argument %d to be a property name", i);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2151 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2152 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2153 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2154 error ("set: invalid number of arguments");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2155 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2156
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2157 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2158 ## test set with name, value pairs
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2159 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2160 %! hf = figure ("visible", "off");
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2161 %! h = plot (1:10, 10:-1:1);
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2162 %! set (h, "linewidth", 10, "marker", "x");
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2163 %! lw = get (h, "linewidth");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2164 %! mk = get (h, "marker");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2165 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2166 %! assert (lw, 10);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2167 %! assert (mk, "x");
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2168 */
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2169
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2170 // Set properties given in two cell arrays containing names and values.
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2171 void
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2172 graphics_object::set (const Array<std::string>& names,
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2173 const Cell& values, octave_idx_type row)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2174 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2175 if (names.numel () != values.columns ())
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2176 {
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
2177 error ("set: number of names must match number of value columns (%d != %d)",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2178 names.numel (), values.columns ());
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2179 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2180
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2181 octave_idx_type k = names.columns ();
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2182
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2183 for (octave_idx_type column = 0; column < k; column++)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2184 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2185 caseless_str name = names(column);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2186 octave_value val = values(row, column);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2187
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2188 set_value_or_default (name, val);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2189
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2190 if (error_state)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2191 break;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2192 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2193 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2194
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2195 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2196 ## test set with cell array arguments
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2197 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2198 %! hf = figure ("visible", "off");
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2199 %! h = plot (1:10, 10:-1:1);
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2200 %! set (h, {"linewidth", "marker"}, {10, "x"});
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2201 %! lw = get (h, "linewidth");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2202 %! mk = get (h, "marker");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2203 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2204 %! assert (lw, 10);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2205 %! assert (mk, "x");
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2206
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2207 ## test set with multiple handles and cell array arguments
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2208 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2209 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2210 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2211 %! h = plot (1:10, 10:-1:1, 1:10, 1:10);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2212 %! set (h, {"linewidth", "marker"}, {10, "x"; 5, "o"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2213 %! assert (get (h, "linewidth"), {10; 5});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2214 %! assert (get (h, "marker"), {"x"; "o"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2215 %! set (h, {"linewidth", "marker"}, {10, "x"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2216 %! assert (get (h, "linewidth"), {10; 10});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2217 %! assert (get (h, "marker"), {"x"; "x"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2218 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2219 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2220 %! end_unwind_protect;
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2221
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2222 %!error <set: number of graphics handles must match number of value rows>
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2223 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2224 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2225 %! h = plot (1:10, 10:-1:1, 1:10, 1:10);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2226 %! set (h, {"linewidth", "marker"}, {10, "x"; 5, "o"; 7, "."});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2227 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2228 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2229 %! end_unwind_protect
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2230
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2231 %!error <set: number of names must match number of value columns>
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2232 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2233 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2234 %! h = plot (1:10, 10:-1:1, 1:10, 1:10);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2235 %! set (h, {"linewidth"}, {10, "x"; 5, "o"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2236 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2237 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2238 %! end_unwind_protect
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2239 */
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2240
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2241 // Set properties given in a struct array
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2242 void
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
2243 graphics_object::set (const octave_map& m)
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
2244 {
15760
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2245 for (octave_idx_type p = 0; p < m.nfields (); p++)
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2246 {
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2247 caseless_str name = m.keys ()[p];
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2248
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2249 octave_value val = octave_value (m.contents (name).elem (m.numel () - 1));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2250
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2251 set_value_or_default (name, val);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2252
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2253 if (error_state)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2254 break;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2255 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2256 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2257
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2258 /*
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2259 ## test set ticklabels for compatibility
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2260 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2261 %! hf = figure ("visible", "off");
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2262 %! set (gca (), "xticklabel", [0, 0.2, 0.4, 0.6, 0.8, 1]);
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2263 %! xticklabel = get (gca (), "xticklabel");
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2264 %! close (hf);
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2265 %! assert (class (xticklabel), "char");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2266 %! assert (size (xticklabel), [6, 3]);
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2267
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2268 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2269 %! hf = figure ("visible", "off");
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2270 %! set (gca (), "xticklabel", "0|0.2|0.4|0.6|0.8|1");
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2271 %! xticklabel = get (gca (), "xticklabel");
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2272 %! close (hf);
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2273 %! assert (class (xticklabel), "char");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2274 %! assert (size (xticklabel), [6, 3]);
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2275
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2276 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2277 %! hf = figure ("visible", "off");
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2278 %! set (gca (), "xticklabel", ["0 "; "0.2"; "0.4"; "0.6"; "0.8"; "1 "]);
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2279 %! xticklabel = get (gca (), "xticklabel");
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2280 %! close (hf);
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2281 %! assert (class (xticklabel), "char");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2282 %! assert (size (xticklabel), [6, 3]);
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2283
16841
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
2284 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2285 %! hf = figure ("visible", "off");
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2286 %! set (gca (), "xticklabel", {"0", "0.2", "0.4", "0.6", "0.8", "1"});
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2287 %! xticklabel = get (gca (), "xticklabel");
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2288 %! close (hf);
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2289 %! assert (class (xticklabel), "cell");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
2290 %! assert (size (xticklabel), [6, 1]);
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2291 */
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2292
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
2293 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2294 ## test set with struct arguments
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2295 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2296 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2297 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2298 %! h = plot (1:10, 10:-1:1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2299 %! set (h, struct ("linewidth", 10, "marker", "x"));
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2300 %! assert (get (h, "linewidth"), 10);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2301 %! assert (get (h, "marker"), "x");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2302 %! h = plot (1:10, 10:-1:1, 1:10, 1:10);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2303 %! set (h, struct ("linewidth", {5, 10}));
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2304 %! assert (get (h, "linewidth"), {10; 10});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2305 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2306 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2307 %! end_unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2308
15760
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2309 ## test ordering
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2310 %!test
1ac3c906990a graphics.cc (graphics_object::set (const octave_map& m)): set structure
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 15707
diff changeset
2311 %! markchanged = @(h, foobar, name) set (h, "userdata", [get(h,"userdata"); {name}]);
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2312 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2313 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2314 %! h = line ();
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2315 %! set (h, "userdata", {});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2316 %! addlistener (h, "color", {markchanged, "color"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2317 %! addlistener (h, "linewidth", {markchanged, "linewidth"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2318 %! ## "linewidth" first
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2319 %! props.linewidth = 2;
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2320 %! props.color = "r";
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2321 %! set (h, props);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2322 %! assert (get (h, "userdata"), fieldnames (props));
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2323 %! clear props;
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2324 %! clf ();
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2325 %! h = line ();
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2326 %! set (h, "userdata", {});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2327 %! addlistener (h, "color", {markchanged, "color"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2328 %! addlistener (h, "linewidth", {markchanged, "linewidth"});
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2329 %! ## "color" first
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2330 %! props.color = "r";
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2331 %! props.linewidth = 2;
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2332 %! set (h, props);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2333 %! assert (get (h, "userdata"), fieldnames (props));
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2334 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2335 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
2336 %! end_unwind_protect
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2337 */
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2338
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2339 // Set a property to a value or to its (factory) default value.
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2340
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2341 void
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2342 graphics_object::set_value_or_default (const caseless_str& name,
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2343 const octave_value& val)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2344 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2345 if (val.is_string ())
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2346 {
16312
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2347 std::string tval = val.string_value ();
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2348
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2349 octave_value default_val;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2350
16312
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2351 if (tval.compare ("default") == 0)
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2352 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2353 default_val = get_default (name);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2354
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2355 if (error_state)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2356 return;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2357
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2358 rep->set (name, default_val);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2359 }
16312
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2360 else if (tval.compare ("factory") == 0)
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2361 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2362 default_val = get_factory_default (name);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2363
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2364 if (error_state)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2365 return;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2366
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2367 rep->set (name, default_val);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2368 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2369 else
16312
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2370 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2371 // Matlab specifically uses "\default" to escape string setting
16312
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2372 if (tval.compare ("\\default") == 0)
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2373 rep->set (name, "default");
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2374 else if (tval.compare ("\\factory") == 0)
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2375 rep->set (name, "factory");
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2376 else
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2377 rep->set (name, val);
d81ef5e64cf1 Accept only case-sensitive keywords 'default', 'factory', 'remove' for graphics properties.
Rik <rik@octave.org>
parents: 16206
diff changeset
2378 }
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2379 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2380 else
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2381 rep->set (name, val);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2382 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2383
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2384 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
2385 ## test setting of default values
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2386 %!test
17237
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2387 %! old_lw = get (0, "defaultlinelinewidth");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2388 %! unwind_protect
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2389 %! hf = figure ("visible", "off");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2390 %! h = plot (1:10, 10:-1:1);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2391 %! set (0, "defaultlinelinewidth", 20);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2392 %! set (h, "linewidth", "default");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2393 %! assert (get (h, "linewidth"), 20);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2394 %! set (h, "linewidth", "factory");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2395 %! assert (get (h, "linewidth"), 0.5);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2396 %! unwind_protect_cleanup
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2397 %! close (hf);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2398 %! set (0, "defaultlinelinewidth", old_lw);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
2399 %! end_unwind_protect
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2400 */
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2401
8234
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2402 static double
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2403 make_handle_fraction (void)
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2404 {
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2405 static double maxrand = RAND_MAX + 2.0;
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2406
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2407 return (rand () + 1.0) / maxrand;
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2408 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2409
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2410 graphics_handle
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2411 gh_manager::do_get_handle (bool integer_figure_handle)
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2412 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2413 graphics_handle retval;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2414
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
2415 if (integer_figure_handle)
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2416 {
8234
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2417 // Figure handles are positive integers corresponding to the
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2418 // figure number.
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2419
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2420 // We always want the lowest unused figure number.
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2421
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2422 retval = 1;
6425
0cc5ca7b1e91 [project @ 2007-03-21 15:57:19 by jwe]
jwe
parents: 6424
diff changeset
2423
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2424 while (handle_map.find (retval) != handle_map.end ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2425 retval++;
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2426 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2427 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2428 {
8234
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2429 // Other graphics handles are negative integers plus some random
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2430 // fractional part. To avoid running out of integers, we
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2431 // recycle the integer part but tack on a new random part each
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2432 // time.
8c4e79668a5e generate new fractional parts for recycled graphics handles
John W. Eaton <jwe@octave.org>
parents: 8233
diff changeset
2433
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2434 free_list_iterator p = handle_free_list.begin ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2435
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2436 if (p != handle_free_list.end ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2437 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2438 retval = *p;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2439 handle_free_list.erase (p);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2440 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2441 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2442 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2443 retval = graphics_handle (next_handle);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2444
11450
5eb10763069f substitute and use LAPACK_LIBS in mkoctfile script
John W. Eaton <jwe@octave.org>
parents: 11431
diff changeset
2445 next_handle = std::ceil (next_handle) - 1.0 - make_handle_fraction ();
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2446 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2447 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2448
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2449 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2450 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2451
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2452 void
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2453 gh_manager::do_free (const graphics_handle& h)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2454 {
7056
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2455 if (h.ok ())
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2456 {
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
2457 if (h.value () != 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2458 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2459 iterator p = handle_map.find (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2460
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2461 if (p != handle_map.end ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2462 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2463 base_properties& bp = p->second.get_properties ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
2464
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2465 bp.set_beingdeleted (true);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2466
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2467 bp.delete_children ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2468
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2469 octave_value val = bp.get_deletefcn ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2470
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2471 bp.execute_deletefcn ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2472
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
2473 // Notify graphics toolkit.
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2474 p->second.finalize ();
8208
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
2475
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
2476 // Note: this will be valid only for first explicitly
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2477 // deleted object. All its children will then have an
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
2478 // unknown graphics toolkit.
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2479
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2480 // Graphics handles for non-figure objects are negative
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2481 // integers plus some random fractional part. To avoid
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2482 // running out of integers, we recycle the integer part
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2483 // but tack on a new random part each time.
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2484
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2485 handle_map.erase (p);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2486
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2487 if (h.value () < 0)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2488 handle_free_list.insert
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2489 (std::ceil (h.value ()) - make_handle_fraction ());
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2490 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2491 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2492 error ("graphics_handle::free: invalid object %g", h.value ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2493 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2494 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2495 error ("graphics_handle::free: can't delete root figure");
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2496 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2497 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2498
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2499 void
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2500 gh_manager::do_renumber_figure (const graphics_handle& old_gh,
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2501 const graphics_handle& new_gh)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2502 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2503 iterator p = handle_map.find (old_gh);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2504
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2505 if (p != handle_map.end ())
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2506 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2507 graphics_object go = p->second;
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2508
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2509 handle_map.erase (p);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2510
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2511 handle_map[new_gh] = go;
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2512
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2513 if (old_gh.value () < 0)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2514 handle_free_list.insert (std::ceil (old_gh.value ())
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2515 - make_handle_fraction ());
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2516 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2517 else
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2518 error ("graphics_handle::free: invalid object %g", old_gh.value ());
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2519
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2520 for (figure_list_iterator q = figure_list.begin ();
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2521 q != figure_list.end (); q++)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2522 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2523 if (*q == old_gh)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2524 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2525 *q = new_gh;
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2526 break;
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2527 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2528 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2529 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
2530
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2531 gh_manager *gh_manager::instance = 0;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2532
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2533 static void
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2534 xset (const graphics_handle& h, const caseless_str& name,
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2535 const octave_value& val)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2536 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2537 graphics_object obj = gh_manager::get_object (h);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2538 obj.set (name, val);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2539 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2540
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2541 static void
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2542 xset (const graphics_handle& h, const octave_value_list& args)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2543 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2544 if (args.length () > 0)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2545 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2546 graphics_object obj = gh_manager::get_object (h);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2547 obj.set (args);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2548 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2549 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2550
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2551 static octave_value
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2552 xget (const graphics_handle& h, const caseless_str& name)
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2553 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2554 graphics_object obj = gh_manager::get_object (h);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2555 return obj.get (name);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2556 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2557
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2558 static graphics_handle
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2559 reparent (const octave_value& ov, const std::string& who,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2560 const std::string& property, const graphics_handle& new_parent,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2561 bool adopt = true)
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2562 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2563 graphics_handle h = octave_NaN;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2564
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2565 double val = ov.double_value ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2566
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2567 if (! error_state)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2568 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2569 h = gh_manager::lookup (val);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2570
7056
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2571 if (h.ok ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2572 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2573 graphics_object obj = gh_manager::get_object (h);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
2574
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2575 graphics_handle parent_h = obj.get_parent ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2576
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2577 graphics_object parent_obj = gh_manager::get_object (parent_h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2578
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2579 parent_obj.remove_child (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2580
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2581 if (adopt)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2582 obj.set ("parent", new_parent.value ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2583 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2584 obj.reparent (new_parent);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2585 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2586 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2587 error ("%s: invalid graphics handle (= %g) for %s",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2588 who.c_str (), val, property.c_str ());
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2589 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2590 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2591 error ("%s: expecting %s to be a graphics handle",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2592 who.c_str (), property.c_str ());
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2593
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2594 return h;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2595 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2596
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2597 // This function is NOT equivalent to the scripting language function gcf.
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2598 graphics_handle
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2599 gcf (void)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2600 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2601 octave_value val = xget (0, "currentfigure");
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2602
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2603 return val.is_empty () ? octave_NaN : val.double_value ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2604 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2605
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2606 // This function is NOT equivalent to the scripting language function gca.
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2607 graphics_handle
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2608 gca (void)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2609 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2610 octave_value val = xget (gcf (), "currentaxes");
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2611
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2612 return val.is_empty () ? octave_NaN : val.double_value ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2613 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2614
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2615 static void
14014
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2616 delete_graphics_object (const graphics_handle& h)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2617 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2618 if (h.ok ())
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2619 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2620 graphics_object obj = gh_manager::get_object (h);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2621
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2622 // Don't do recursive deleting, due to callbacks
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2623 if (! obj.get_properties ().is_beingdeleted ())
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2624 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2625 graphics_handle parent_h = obj.get_parent ();
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2626
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2627 graphics_object parent_obj =
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2628 gh_manager::get_object (parent_h);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2629
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2630 // NOTE: free the handle before removing it from its
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2631 // parent's children, such that the object's
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2632 // state is correct when the deletefcn callback
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2633 // is executed
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2634
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2635 gh_manager::free (h);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2636
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2637 // A callback function might have already deleted
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2638 // the parent
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2639 if (parent_obj.valid_object ())
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2640 parent_obj.remove_child (h);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2641
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2642 Vdrawnow_requested = true;
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2643 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2644 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2645 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2646
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2647 static void
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2648 delete_graphics_object (double val)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2649 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2650 delete_graphics_object (gh_manager::lookup (val));
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2651 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2652
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2653 static void
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2654 delete_graphics_objects (const NDArray vals)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2655 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2656 for (octave_idx_type i = 0; i < vals.numel (); i++)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2657 delete_graphics_object (vals.elem (i));
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2658 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2659
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2660 static void
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2661 close_figure (const graphics_handle& handle)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2662 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2663 octave_value closerequestfcn = xget (handle, "closerequestfcn");
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2664
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2665 OCTAVE_SAFE_CALL (gh_manager::execute_callback, (handle, closerequestfcn));
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2666 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2667
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2668 static void
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2669 force_close_figure (const graphics_handle& handle)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2670 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2671 // Remove the deletefcn and closerequestfcn callbacks and delete the
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2672 // object directly.
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2673
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2674 xset (handle, "deletefcn", Matrix ());
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2675 xset (handle, "closerequestfcn", Matrix ());
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2676
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2677 delete_graphics_object (handle);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2678 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2679
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2680 void
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2681 gh_manager::do_close_all_figures (void)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2682 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2683 // FIXME: should we process or discard pending events?
14014
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2684
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2685 event_queue.clear ();
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2686
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2687 // Don't use figure_list_iterator because we'll be removing elements
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2688 // from the list elsewhere.
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2689
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2690 Matrix hlist = do_figure_handle_list (true);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2691
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2692 for (octave_idx_type i = 0; i < hlist.numel (); i++)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2693 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2694 graphics_handle h = gh_manager::lookup (hlist(i));
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2695
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2696 if (h.ok ())
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2697 close_figure (h);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2698 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2699
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2700 // They should all be closed now. If not, force them to close.
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2701
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2702 hlist = do_figure_handle_list (true);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2703
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2704 for (octave_idx_type i = 0; i < hlist.numel (); i++)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2705 {
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2706 graphics_handle h = gh_manager::lookup (hlist(i));
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2707
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2708 if (h.ok ())
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2709 force_close_figure (h);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2710 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2711
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2712 // None left now, right?
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2713
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2714 hlist = do_figure_handle_list (true);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2715
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2716 assert (hlist.numel () == 0);
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2717
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2718 // Clear all callback objects from our list.
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2719
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2720 callback_objects.clear ();
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2721 }
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2722
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2723 static void
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2724 adopt (const graphics_handle& p, const graphics_handle& h)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2725 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2726 graphics_object parent_obj = gh_manager::get_object (p);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2727 parent_obj.adopt (h);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2728 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2729
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2730 static bool
7056
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2731 is_handle (const graphics_handle& h)
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2732 {
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2733 return h.ok ();
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2734 }
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2735
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
2736 static bool
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2737 is_handle (double val)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2738 {
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
2739 graphics_handle h = gh_manager::lookup (val);
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
2740
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
2741 return h.ok ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2742 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2743
8183
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2744 static octave_value
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2745 is_handle (const octave_value& val)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2746 {
8183
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2747 octave_value retval = false;
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2748
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2749 if (val.is_real_scalar () && is_handle (val.double_value ()))
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2750 retval = true;
12587
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2751 else if (val.is_numeric_type () && val.is_real_type ())
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2752 {
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2753 const NDArray handles = val.array_value ();
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2754
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2755 if (! error_state)
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2756 {
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2757 boolNDArray result (handles.dims ());
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2758
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2759 for (octave_idx_type i = 0; i < handles.numel (); i++)
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2760 result.xelem (i) = is_handle (handles (i));
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2761
c3d4542a4f06 graphics.cc: Allow ishandle() to accept vector of handles (bug 33025).
John Eaton <jwe@octave.org>
parents: 12549
diff changeset
2762 retval = result;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2763 }
8183
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2764 }
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2765
277218396978 Handle arrays of handles in the Fishandle function
David Bateman <dbateman@free.fr>
parents: 8102
diff changeset
2766 return retval;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2767 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2768
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2769 static bool
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2770 is_figure (double val)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2771 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2772 graphics_object obj = gh_manager::get_object (val);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2773
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2774 return obj && obj.isa ("figure");
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2775 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2776
7370
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
2777 static void
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
2778 xcreatefcn (const graphics_handle& h)
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
2779 {
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
2780 graphics_object obj = gh_manager::get_object (h);
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
2781 obj.get_properties ().execute_createfcn ();
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
2782 }
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
2783
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2784 static void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2785 xinitialize (const graphics_handle& h)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2786 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2787 graphics_object go = gh_manager::get_object (h);
13908
32a77debff75 strip trailing spaces
Konstantinos Poulios <logari81@googlemail.com>
parents: 13897
diff changeset
2788
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2789 if (go)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2790 go.initialize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2791 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2792
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2793 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2794
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2795 void
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
2796 base_graphics_toolkit::update (const graphics_handle& h, int id)
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2797 {
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2798 graphics_object go = gh_manager::get_object (h);
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2799
10973
a8235d26b57a improve names of base_graphics_backend methods
John W. Eaton <jwe@octave.org>
parents: 10949
diff changeset
2800 update (go, id);
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2801 }
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2802
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2803 bool
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
2804 base_graphics_toolkit::initialize (const graphics_handle& h)
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2805 {
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2806 graphics_object go = gh_manager::get_object (h);
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2807
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
2808 return initialize (go);
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2809 }
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2810
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2811 void
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
2812 base_graphics_toolkit::finalize (const graphics_handle& h)
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2813 {
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2814 graphics_object go = gh_manager::get_object (h);
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2815
10973
a8235d26b57a improve names of base_graphics_backend methods
John W. Eaton <jwe@octave.org>
parents: 10949
diff changeset
2816 finalize (go);
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2817 }
14014
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
2818
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2819 static void
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2820 xreset_default_properties (graphics_handle gh,
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2821 property_list::pval_map_type factory_pval)
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2822 {
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2823 graphics_object obj = gh_manager::get_object (gh);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2824
19867
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2825 // Replace factory defaults by user defined ones
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2826 std::string go_name = obj.get_properties ().graphics_object_name ();
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2827 property_list::pval_map_type pval;
19867
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2828 obj.build_user_defaults_map (pval, go_name);
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2829
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2830 for (property_list::pval_map_const_iterator p = pval.begin ();
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2831 p != pval.end (); p++)
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2832 {
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2833 factory_pval[p->first] = p->second;
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2834 }
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2835
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2836
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
2837 // Reset defaults
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2838 for (property_list::pval_map_const_iterator it = factory_pval.begin ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2839 it != factory_pval.end (); it++)
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2840 {
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2841 std::string pname = it->first;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2842
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2843 // Don't reset internal properties and handle_properties
20071
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
2844 if (! obj.has_readonly_property (pname)
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
2845 && pname.find ("__") != 0 && pname.find ("current") != 0
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
2846 && pname != "uicontextmenu" && pname != "parent")
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2847 {
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
2848 // Store *mode prop/val in order to set them last
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2849 if (pname.find ("mode") == (pname.length () - 4))
19278
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2850 pval[pname] = it->second;
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2851 else
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2852 obj.set (pname, it->second);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2853 }
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2854 }
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2855
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2856 // set *mode properties
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2857 for (property_list::pval_map_const_iterator it = pval.begin ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2858 it != pval.end (); it++)
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2859 obj.set (it->first, it->second);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2860 }
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
2861
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2862 // ---------------------------------------------------------------------
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2863
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2864 void
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2865 base_properties::set_from_list (base_graphics_object& obj,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2866 property_list& defaults)
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2867 {
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2868 std::string go_name = graphics_object_name ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2869
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2870 property_list::plist_map_const_iterator p = defaults.find (go_name);
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2871
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2872 if (p != defaults.end ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2873 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2874 const property_list::pval_map_type pval_map = p->second;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2875
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2876 for (property_list::pval_map_const_iterator q = pval_map.begin ();
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2877 q != pval_map.end ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2878 q++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2879 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2880 std::string pname = q->first;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2881
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2882 obj.set (pname, q->second);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2883
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2884 if (error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2885 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2886 error ("error setting default property %s", pname.c_str ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2887 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2888 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2889 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2890 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2891 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2892
19278
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2893 /*
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2894 ## test defaults are set in the order they were stored
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2895 %!test
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2896 %! set(0, "defaultfigureunits", "normalized");
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2897 %! set(0, "defaultfigureposition", [0.7 0 0.3 0.3]);
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2898 %! hf = figure ("visible", "off");
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2899 %! tol = 20 * eps;
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2900 %! unwind_protect
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2901 %! assert (get (hf, "position"), [0.7 0 0.3 0.3], tol);
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2902 %! unwind_protect_cleanup
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2903 %! close (hf);
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2904 %! set(0, "defaultfigureunits", "remove");
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2905 %! set(0, "defaultfigureposition", "remove");
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2906 %! end_unwind_protect
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2907 */
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19255
diff changeset
2908
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2909 octave_value
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2910 base_properties::get_dynamic (const caseless_str& name) const
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2911 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2912 octave_value retval;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2913
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2914 std::map<caseless_str, property, cmp_caseless_str>::const_iterator it =
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2915 all_props.find (name);
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2916
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2917 if (it != all_props.end ())
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2918 retval = it->second.get ();
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2919 else
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2920 error ("get: unknown property \"%s\"", name.c_str ());
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2921
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2922 return retval;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2923 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2924
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2925 octave_value
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2926 base_properties::get_dynamic (bool all) const
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2927 {
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
2928 octave_scalar_map m;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2929
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2930 for (std::map<caseless_str, property, cmp_caseless_str>::const_iterator
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2931 it = all_props.begin (); it != all_props.end (); ++it)
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
2932 if (all || ! it->second.is_hidden ())
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
2933 m.assign (it->second.get_name (), it->second.get ());
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2934
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2935 return m;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2936 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2937
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
2938 std::set<std::string>
9972
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9883
diff changeset
2939 base_properties::dynamic_property_names (void) const
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9883
diff changeset
2940 {
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9883
diff changeset
2941 return dynamic_properties;
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
2942 }
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
2943
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2944 bool
9972
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9883
diff changeset
2945 base_properties::has_dynamic_property (const std::string& pname)
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9883
diff changeset
2946 {
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9883
diff changeset
2947 const std::set<std::string>& dynprops = dynamic_property_names ();
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2948
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
2949 if (dynprops.find (pname) != dynprops.end ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
2950 return true;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
2951 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
2952 return all_props.find (pname) != all_props.end ();
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2953 }
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2954
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2955 void
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2956 base_properties::set_dynamic (const caseless_str& pname,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
2957 const octave_value& val)
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2958 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2959 std::map<caseless_str, property, cmp_caseless_str>::iterator it =
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2960 all_props.find (pname);
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2961
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2962 if (it != all_props.end ())
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2963 it->second.set (val);
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2964 else
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2965 error ("set: unknown property \"%s\"", pname.c_str ());
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2966
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2967 if (! error_state)
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2968 {
9972
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9883
diff changeset
2969 dynamic_properties.insert (pname);
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2970
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2971 mark_modified ();
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9181
diff changeset
2972 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2973 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2974
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2975 property
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2976 base_properties::get_property_dynamic (const caseless_str& name)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2977 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2978 std::map<caseless_str, property, cmp_caseless_str>::const_iterator it =
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2979 all_props.find (name);
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2980
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2981 if (it == all_props.end ())
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2982 {
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2983 error ("get_property: unknown property \"%s\"", name.c_str ());
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2984 return property ();
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2985 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2986 else
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2987 return it->second;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2988 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
2989
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2990 void
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
2991 base_properties::set_parent (const octave_value& val)
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2992 {
17641
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
2993 double hnp = val.double_value ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2994
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2995 graphics_handle new_parent = octave_NaN;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
2996
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2997 if (! error_state)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
2998 {
17641
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
2999 if (hnp == __myhandle__)
17626
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3000 error ("set: can not set object parent to be object itself");
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
3001 else
17626
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3002 {
17641
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3003 new_parent = gh_manager::lookup (hnp);
17626
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3004
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3005 if (new_parent.ok ())
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3006 {
17641
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3007 // Remove child from current parent
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3008 graphics_object old_parent_obj;
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3009 old_parent_obj = gh_manager::get_object (get_parent ());
18517
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3010
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3011
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3012 if (old_parent_obj.get_handle () != hnp)
18517
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3013 old_parent_obj.remove_child (__myhandle__);
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3014 else
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3015 // Do nothing more
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3016 return;
17641
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3017
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3018 // Check new parent's parent is not this child to avoid recursion
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3019 graphics_object new_parent_obj;
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3020 new_parent_obj = gh_manager::get_object (new_parent);
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3021 if (new_parent_obj.get_parent () == __myhandle__)
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3022 {
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3023 // new parent's parent gets child's original parent
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3024 new_parent_obj.get_properties ().set_parent (get_parent ().as_octave_value ());
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3025 }
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3026
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3027 // Set parent property to new_parent and do adoption
17626
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3028 parent = new_parent.as_octave_value ();
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3029 ::adopt (parent.handle_value (), __myhandle__);
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3030 }
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3031 else
17641
cd5a6008ae72 Fix recursion segfault when setting axis parent to be child hggroup (bug #37927).
Rik <rik@octave.org>
parents: 17631
diff changeset
3032 error ("set: invalid graphics handle (= %g) for parent", hnp);
17626
82b1778798d3 Fix segfault when setting object parent to be object itself (bug #37927).
Rik <rik@octave.org>
parents: 17608
diff changeset
3033 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
3034 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
3035 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
3036 error ("set: expecting parent to be a graphics handle");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
3037 }
6432
5bec61ae1576 [project @ 2007-03-23 02:19:10 by jwe]
jwe
parents: 6425
diff changeset
3038
18517
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3039 /*
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3040 %!test
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3041 %! hf = figure ("visible", "off");
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3042 %! unwind_protect
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3043 %! hax = gca ();
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3044 %! set (hax, "parent", gcf ())
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3045 %! assert (gca (), hax)
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3046 %! unwind_protect_cleanup
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3047 %! close (hf);
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3048 %! end_unwind_protect
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3049 */
0cbd0d285541 Avoid reseting "parent" property to the same value (bug #37752).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18118
diff changeset
3050
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
3051 void
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3052 base_properties::mark_modified (void)
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3053 {
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3054 __modified__ = "on";
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3055 graphics_object parent_obj = gh_manager::get_object (get_parent ());
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
3056 if (parent_obj)
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
3057 parent_obj.mark_modified ();
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3058 }
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3059
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3060 void
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3061 base_properties::override_defaults (base_graphics_object& obj)
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3062 {
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3063 graphics_object parent_obj = gh_manager::get_object (get_parent ());
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
3064
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
3065 if (parent_obj)
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
3066 parent_obj.override_defaults (obj);
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3067 }
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3068
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3069 void
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
3070 base_properties::update_axis_limits (const std::string& axis_type) const
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
3071 {
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3072 graphics_object obj = gh_manager::get_object (__myhandle__);
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3073
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3074 if (obj)
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
3075 obj.update_axis_limits (axis_type);
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
3076 }
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
3077
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
3078 void
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3079 base_properties::update_axis_limits (const std::string& axis_type,
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3080 const graphics_handle& h) const
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3081 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3082 graphics_object obj = gh_manager::get_object (__myhandle__);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3083
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3084 if (obj)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3085 obj.update_axis_limits (axis_type, h);
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3086 }
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3087
13324
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
3088 bool
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
3089 base_properties::is_handle_visible (void) const
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
3090 {
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
3091 return (handlevisibility.is ("on")
13736
deb69dab4514 Avoid some compilation warnings.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13713
diff changeset
3092 || (executing_callback && ! handlevisibility.is ("off")));
13324
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
3093 }
1e12601d2697 make handles with their handlevisibility property set to "callback" visible in callback functions
John W. Eaton <jwe@octave.org>
parents: 13323
diff changeset
3094
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
3095 graphics_toolkit
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
3096 base_properties::get_toolkit (void) const
7419
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7409
diff changeset
3097 {
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7409
diff changeset
3098 graphics_object go = gh_manager::get_object (get_parent ());
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7409
diff changeset
3099
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7409
diff changeset
3100 if (go)
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
3101 return go.get_toolkit ();
7419
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7409
diff changeset
3102 else
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
3103 return graphics_toolkit ();
7419
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7409
diff changeset
3104 }
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7409
diff changeset
3105
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3106 void
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3107 base_properties::update_boundingbox (void)
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3108 {
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3109 Matrix kids = get_children ();
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3110
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3111 for (int i = 0; i < kids.numel (); i++)
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3112 {
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3113 graphics_object go = gh_manager::get_object (kids(i));
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3114
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3115 if (go.valid_object ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3116 go.get_properties ().update_boundingbox ();
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3117 }
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3118 }
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3119
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3120 void
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3121 base_properties::update_autopos (const std::string& elem_type)
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3122 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3123 graphics_object parent_obj = gh_manager::get_object (get_parent ());
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3124
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3125 if (parent_obj.valid_object ())
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3126 parent_obj.get_properties ().update_autopos (elem_type);
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3127 }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3128
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
3129 void
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3130 base_properties::add_listener (const caseless_str& nm, const octave_value& v,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3131 listener_mode mode)
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3132 {
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3133 property p = get_property (nm);
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3134
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3135 if (! error_state && p.ok ())
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3136 p.add_listener (v, mode);
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3137 }
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
3138
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3139 void
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
3140 base_properties::delete_listener (const caseless_str& nm,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3141 const octave_value& v, listener_mode mode)
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3142 {
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3143 property p = get_property (nm);
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3144
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3145 if (! error_state && p.ok ())
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3146 p.delete_listener (v, mode);
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3147 }
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3148
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3149 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3150
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3151 void
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3152 base_graphics_object::update_axis_limits (const std::string& axis_type)
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3153 {
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3154 if (valid_object ())
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3155 {
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3156 graphics_object parent_obj = gh_manager::get_object (get_parent ());
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3157
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3158 if (parent_obj)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3159 parent_obj.update_axis_limits (axis_type);
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3160 }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3161 else
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3162 error ("base_graphics_object::update_axis_limits: invalid graphics object");
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3163 }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3164
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3165 void
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3166 base_graphics_object::update_axis_limits (const std::string& axis_type,
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3167 const graphics_handle& h)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3168 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3169 if (valid_object ())
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3170 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3171 graphics_object parent_obj = gh_manager::get_object (get_parent ());
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3172
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3173 if (parent_obj)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3174 parent_obj.update_axis_limits (axis_type, h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3175 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3176 else
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3177 error ("base_graphics_object::update_axis_limits: invalid graphics object");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3178 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3179
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3180 void
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3181 base_graphics_object::remove_all_listeners (void)
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3182 {
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3183 octave_map m = get (true).map_value ();
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3184
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3185 for (octave_map::const_iterator pa = m.begin (); pa != m.end (); pa++)
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3186 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3187 // FIXME: there has to be a better way. I think we want to
9585
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3188 // ask whether it is OK to delete the listener for the given
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3189 // property. How can we know in advance that it will be OK?
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3190
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
3191 unwind_protect frame;
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
3192
13849
b4b8e525dee0 Stop debug_on_error triggering for a new plot (bug #32655)
Rik <octave@nomad.inbox5.com>
parents: 13830
diff changeset
3193 frame.protect_var (error_state);
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
3194 frame.protect_var (discard_error_messages);
13849
b4b8e525dee0 Stop debug_on_error triggering for a new plot (bug #32655)
Rik <octave@nomad.inbox5.com>
parents: 13830
diff changeset
3195 frame.protect_var (Vdebug_on_error);
b4b8e525dee0 Stop debug_on_error triggering for a new plot (bug #32655)
Rik <octave@nomad.inbox5.com>
parents: 13830
diff changeset
3196 frame.protect_var (Vdebug_on_warning);
9585
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3197
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3198 discard_error_messages = true;
13849
b4b8e525dee0 Stop debug_on_error triggering for a new plot (bug #32655)
Rik <octave@nomad.inbox5.com>
parents: 13830
diff changeset
3199 Vdebug_on_error = false;
b4b8e525dee0 Stop debug_on_error triggering for a new plot (bug #32655)
Rik <octave@nomad.inbox5.com>
parents: 13830
diff changeset
3200 Vdebug_on_warning = false;
9585
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3201
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3202 property p = get_properties ().get_property (pa->first);
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3203
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9584
diff changeset
3204 if (! error_state && p.ok ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3205 p.delete_listener ();
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3206 }
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3207 }
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
3208
19867
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3209 void
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3210 base_graphics_object::build_user_defaults_map (property_list::pval_map_type &def, const std::string go_name) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3211 {
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3212 property_list local_defaults = get_defaults_list ();
20068
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3213 property_list::plist_map_const_iterator p =
19867
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3214 local_defaults.find (go_name);
20068
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3215
19867
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3216 if (p != local_defaults.end ())
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3217 {
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3218 property_list::pval_map_type pval = p->second;
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3219 for (property_list::pval_map_const_iterator q = pval.begin ();
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3220 q != pval.end (); q++)
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3221 {
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3222 std::string pname = q->first;
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3223 if (def.find (pname) == def.end ())
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3224 def[pname] = q->second;
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3225 }
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3226 }
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3227
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3228 graphics_object parent_obj = gh_manager::get_object (get_parent ());
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3229
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3230 if (parent_obj)
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3231 parent_obj.build_user_defaults_map (def, go_name);
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3232
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3233 }
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
3234
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3235 void
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
3236 base_graphics_object::reset_default_properties (void)
20068
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3237 {
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3238 if (valid_object ())
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3239 {
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3240 property_list::pval_map_type factory_pval =
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3241 gh_manager::get_object (0).get_factory_defaults_list ()
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3242 .find (type ())->second;
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3243
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3244 xreset_default_properties (get_handle (), factory_pval);
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3245 }
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 20039
diff changeset
3246 }
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
3247
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3248 std::string
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3249 base_graphics_object::values_as_string (void)
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3250 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3251 std::string retval;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3252
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3253 if (valid_object ())
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3254 {
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3255 octave_map m = get ().map_value ();
18673
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3256 graphics_object obj = gh_manager::get_object (get_handle ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
3257
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3258 for (octave_map::const_iterator pa = m.begin (); pa != m.end (); pa++)
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3259 {
20071
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
3260 if (pa->first != "children"
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
3261 && ! obj.has_readonly_property (pa->first))
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3262 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3263 property p = get_properties ().get_property (pa->first);
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3264
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3265 if (p.ok () && ! p.is_hidden ())
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3266 {
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
3267 retval += "\n\t" + std::string (pa->first) + ": ";
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3268 if (p.is_radio ())
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3269 retval += p.values_as_string ();
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3270 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3271 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3272 }
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3273
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3274 if (! retval.empty ())
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3275 retval += "\n";
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3276 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3277 else
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3278 error ("base_graphics_object::values_as_string: invalid graphics object");
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3279
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3280 return retval;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3281 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3282
18117
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3283 std::string
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3284 base_graphics_object::value_as_string (const std::string& prop)
18117
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3285 {
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3286 std::string retval;
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3287
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3288 if (valid_object ())
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3289 {
18673
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3290 graphics_object obj = gh_manager::get_object (get_handle ());
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3291
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3292 if (prop != "children" && ! obj.has_readonly_property (prop))
18117
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3293 {
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3294 property p = get_properties ().get_property (prop);
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3295
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3296 if (p.ok () && ! p.is_hidden ())
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3297 {
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3298 if (p.is_radio ())
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3299 retval += p.values_as_string ();
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3300 }
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3301 }
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3302
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
3303 if (! retval.empty ())
18117
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3304 retval += "\n";
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3305 }
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3306 else
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3307 error ("base_graphics_object::value_as_string: invalid graphics object");
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3308
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3309 return retval;
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3310 }
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
3311
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3312 octave_scalar_map
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3313 base_graphics_object::values_as_struct (void)
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3314 {
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3315 octave_scalar_map retval;
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3316
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3317 if (valid_object ())
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3318 {
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3319 octave_scalar_map m = get ().scalar_map_value ();
18673
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3320 graphics_object obj = gh_manager::get_object (get_handle ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
3321
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3322 for (octave_scalar_map::const_iterator pa = m.begin ();
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3323 pa != m.end (); pa++)
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3324 {
18673
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3325 if (pa->first != "children"
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3326 && ! obj.has_readonly_property (pa->first))
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3327 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3328 property p = get_properties ().get_property (pa->first);
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3329
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3330 if (p.ok () && ! p.is_hidden ())
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3331 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3332 if (p.is_radio ())
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3333 retval.assign (p.get_name (), p.values_as_cell ());
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3334 else
11074
8a3b7e8fcbbc graphics.cc, graphics.h.in, genprops.awk: use octave_map and octave_scalar_map instead of Octave_map
John W. Eaton <jwe@octave.org>
parents: 10995
diff changeset
3335 retval.assign (p.get_name (), Cell ());
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3336 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3337 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3338 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3339 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3340 else
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3341 error ("base_graphics_object::values_as_struct: invalid graphics object");
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3342
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3343 return retval;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3344 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
3345
18673
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3346 /*
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3347 %!test
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3348 %! hfig = figure ("visible", "off");
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3349 %! unwind_protect
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3350 %! hax = axes ();
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3351 %! ret = set (hax, "tightinset");
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3352 %! assert (isempty (ret));
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3353 %! ret = set (hax, "type");
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3354 %! assert (isempty (ret));
20039
426525fb3b9f Hide Octave-only figure property __graphics_toolkit__.
Rik <rik@octave.org>
parents: 20000
diff changeset
3355 %! ret = set (hfig, "tag");
18673
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3356 %! assert (isempty (ret));
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3357 %! ret = set (0, "commandwindowsize");
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3358 %! assert (isempty (ret));
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3359 %! ret = set (0);
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3360 %! assert (! isfield (ret, "commandwindowsize"));
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3361 %! unwind_protect_cleanup
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3362 %! close (hfig);
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3363 %! end_unwind_protect
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
3364 */
20039
426525fb3b9f Hide Octave-only figure property __graphics_toolkit__.
Rik <rik@octave.org>
parents: 20000
diff changeset
3365
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3366 graphics_object
11492
d86389a6dc3f graphics.cc: avoid GCC warning
John W. Eaton <jwe@octave.org>
parents: 11456
diff changeset
3367 graphics_object::get_ancestor (const std::string& obj_type) const
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3368 {
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3369 if (valid_object ())
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3370 {
11492
d86389a6dc3f graphics.cc: avoid GCC warning
John W. Eaton <jwe@octave.org>
parents: 11456
diff changeset
3371 if (isa (obj_type))
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3372 return *this;
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3373 else
11492
d86389a6dc3f graphics.cc: avoid GCC warning
John W. Eaton <jwe@octave.org>
parents: 11456
diff changeset
3374 return gh_manager::get_object (get_parent ()).get_ancestor (obj_type);
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3375 }
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3376 else
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3377 return graphics_object ();
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3378 }
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11239
diff changeset
3379
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3380 // ---------------------------------------------------------------------
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
3381
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3382 #include "graphics-props.cc"
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3383
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3384 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3385
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
3386 void
7822
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3387 root_figure::properties::set_callbackobject (const octave_value& v)
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3388 {
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3389 graphics_handle val (v);
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3390
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3391 if (error_state)
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3392 return;
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3393
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3394 if (xisnan (val.value ()))
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3395 {
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3396 if (! cbo_stack.empty ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3397 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3398 val = cbo_stack.front ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3399
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3400 cbo_stack.pop_front ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3401 }
7822
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3402
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3403 callbackobject = val;
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3404 }
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3405 else if (is_handle (val))
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3406 {
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3407 if (get_callbackobject ().ok ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3408 cbo_stack.push_front (get_callbackobject ());
7822
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3409
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3410 callbackobject = val;
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3411 }
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3412 else
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3413 gripe_set_invalid ("callbackobject");
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3414 }
edbaa13397ee Implement callbackobject property in root object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7820
diff changeset
3415
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3416 void
18902
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3417 root_figure::properties::set_currentfigure (const octave_value& v)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3418 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3419 graphics_handle val (v);
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3420
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3421 if (error_state)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3422 return;
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3423
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3424 if (xisnan (val.value ()) || is_handle (val))
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3425 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3426 currentfigure = val;
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3427
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3428 if (val.ok ())
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3429 gh_manager::push_figure (val);
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3430 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3431 else
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3432 gripe_set_invalid ("currentfigure");
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3433 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3434
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3435 std::string
18946
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3436 root_figure::properties::get_diary (void) const
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3437 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3438 bool is_diary_on = F__diarystate__ ()(0).bool_value ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3439 if (is_diary_on)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3440 return std::string ("on");
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3441 else
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3442 return std::string ("off");
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3443 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3444
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3445 void
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3446 root_figure::properties::set_diary (const octave_value& val)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3447 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3448 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3449 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3450 // Input checking and abrev. matching
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3451 diary.set (val, false);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3452
18946
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3453 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3454 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3455 Fdiary (ovl (diary.current_value ()));
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3456
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3457 diary.run_listeners ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3458 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3459 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3460 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3461
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3462 std::string
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3463 root_figure::properties::get_diaryfile (void) const
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3464 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3465 return F__diaryfile__ ()(0).string_value ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3466 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3467
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3468 void
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3469 root_figure::properties::set_diaryfile (const octave_value& val)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3470 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3471 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3472 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3473 // Input checking and abrev. matching
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3474 diaryfile.set (val, false);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3475
18946
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3476 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3477 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3478 Fdiary (ovl (diaryfile.string_value ()));
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3479
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3480 diaryfile.run_listeners ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3481 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3482 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3483 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3484
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3485 std::string
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3486 root_figure::properties::get_echo (void) const
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3487 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3488 bool is_echo_on = F__echostate__ ()(0).bool_value ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3489 if (is_echo_on)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3490 return std::string ("on");
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3491 else
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3492 return std::string ("off");
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3493 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3494
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3495 void
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3496 root_figure::properties::set_echo (const octave_value& val)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3497 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3498 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3499 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3500 // Input checking and abrev. matching
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3501 echo.set (val, false);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3502
18946
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3503 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3504 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3505 Fecho (ovl (echo.current_value ()));
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3506
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3507 echo.run_listeners ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3508 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3509 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3510 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3511
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3512 std::string
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3513 root_figure::properties::get_errormessage (void) const
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3514 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3515 return Flasterr ()(0).string_value ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3516 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3517
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3518 std::string
18902
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3519 root_figure::properties::get_format (void) const
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3520 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3521 return F__formatstring__ ()(0).string_value ();
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3522 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3523
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3524 void
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3525 root_figure::properties::set_format (const octave_value& val)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3526 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3527 if (! error_state)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3528 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3529 // Input checking and abrev. matching
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3530 format.set (val, false);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3531
18902
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3532 if (! error_state)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3533 {
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3534 Fformat (ovl (format.current_value ()));
18902
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3535
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3536 format.run_listeners ();
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3537 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3538 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3539 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3540
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3541 std::string
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3542 root_figure::properties::get_formatspacing (void) const
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3543 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3544 bool iscompact = F__compactformat__ ()(0).bool_value ();
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3545 if (iscompact)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3546 return std::string ("compact");
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3547 else
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3548 return std::string ("loose");
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3549 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3550
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3551 void
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3552 root_figure::properties::set_formatspacing (const octave_value& val)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3553 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3554 if (! error_state)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3555 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3556 // Input checking and abrev. matching
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3557 formatspacing.set (val, false);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3558
18902
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3559 if (! error_state)
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3560 {
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3561 std::string strval = formatspacing.current_value ();
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3562
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3563 if (strval == "compact")
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3564 F__compactformat__ (ovl (true));
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3565 else
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3566 F__compactformat__ (ovl (false));
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3567
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3568 formatspacing.run_listeners ();
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3569 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3570 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3571 }
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3572
18946
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3573
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3574 double
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3575 root_figure::properties::get_recursionlimit (void) const
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3576 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3577 return Fmax_recursion_depth ()(0).double_value ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3578 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3579
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3580 void
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3581 root_figure::properties::set_recursionlimit (const octave_value& val)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3582 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3583 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3584 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3585 // Input checking and abrev. matching
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3586 recursionlimit.set (val, false);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3587
18946
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3588 if (! error_state)
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3589 {
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3590 double dval = recursionlimit.double_value ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3591
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3592 Fmax_recursion_depth (ovl (dval));
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3593
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3594 recursionlimit.run_listeners ();
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3595 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3596 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3597 }
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18902
diff changeset
3598
18902
9fbb254c09e6 build: Fix compiling with new graphic root properties (cset 28eab2d84190).
Rik <rik@octave.org>
parents: 18892
diff changeset
3599 void
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3600 figure::properties::set_integerhandle (const octave_value& val)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3601 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3602 if (! error_state)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3603 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3604 if (integerhandle.set (val, true))
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3605 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3606 bool int_fig_handle = integerhandle.is_on ();
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3607
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3608 graphics_object this_go = gh_manager::get_object (__myhandle__);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3609
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3610 graphics_handle old_myhandle = __myhandle__;
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3611
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3612 __myhandle__ = gh_manager::get_handle (int_fig_handle);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3613
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3614 gh_manager::renumber_figure (old_myhandle, __myhandle__);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3615
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3616 graphics_object parent_go = gh_manager::get_object (get_parent ());
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3617
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3618 base_properties& props = parent_go.get_properties ();
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3619
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3620 props.renumber_child (old_myhandle, __myhandle__);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3621
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3622 Matrix kids = get_children ();
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3623
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3624 for (octave_idx_type i = 0; i < kids.numel (); i++)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3625 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3626 graphics_object kid = gh_manager::get_object (kids(i));
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3627
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3628 kid.get_properties ().renumber_parent (__myhandle__);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3629 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3630
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3631 graphics_handle cf = gh_manager::current_figure ();
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3632
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3633 if (__myhandle__ == cf)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3634 xset (0, "currentfigure", __myhandle__.value ());
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3635
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3636 this_go.update (integerhandle.get_id ());
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3637
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3638 mark_modified ();
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3639 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3640 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3641 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
3642
17861
870f3e12e163 maint: Use phrase "FIXME:" for problem areas in code.
Rik <rik@octave.org>
parents: 17842
diff changeset
3643 // FIXME: This should update monitorpositions and pointerlocation, but
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3644 // as these properties are yet used, and so it doesn't matter that they
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3645 // aren't set yet.
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3646 void
8560
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3647 root_figure::properties::update_units (void)
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3648 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3649 caseless_str xunits = get_units ();
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3650
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3651 Matrix ss = default_screensize ();
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3652
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3653 double dpi = get_screenpixelsperinch ();
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3654
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3655 if (xunits.compare ("inches"))
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3656 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3657 ss(0) = 0;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3658 ss(1) = 0;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3659 ss(2) /= dpi;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3660 ss(3) /= dpi;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3661 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3662 else if (xunits.compare ("centimeters"))
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3663 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3664 ss(0) = 0;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3665 ss(1) = 0;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3666 ss(2) *= 2.54 / dpi;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3667 ss(3) *= 2.54 / dpi;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3668 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3669 else if (xunits.compare ("normalized"))
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3670 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3671 ss = Matrix (1, 4, 1.0);
14266
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
3672 ss(0) = 0;
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
3673 ss(1) = 0;
8560
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3674 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3675 else if (xunits.compare ("points"))
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3676 {
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3677 ss(0) = 0;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3678 ss(1) = 0;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3679 ss(2) *= 72 / dpi;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3680 ss(3) *= 72 / dpi;
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3681 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3682
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3683 set_screensize (ss);
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3684 }
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3685
14357
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3686 Matrix
14604
de72463862c4 Silence warnings
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 14498
diff changeset
3687 root_figure::properties::get_boundingbox (bool, const Matrix&) const
14357
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3688 {
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3689 Matrix screen_size = screen_size_pixels ();
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3690 Matrix pos = Matrix (1, 4, 0);
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3691 pos(2) = screen_size(0);
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3692 pos(3) = screen_size(1);
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3693 return pos;
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3694 }
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14326
diff changeset
3695
14266
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
3696 /*
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
3697 %!test
17237
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3698 %! old_units = get (0, "units");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3699 %! unwind_protect
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3700 %! set (0, "units", "pixels");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3701 %! sz = get (0, "screensize") - [1, 1, 0, 0];
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3702 %! dpi = get (0, "screenpixelsperinch");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3703 %! set (0, "units", "inches");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3704 %! assert (get (0, "screensize"), sz / dpi, 0.5 / dpi);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3705 %! set (0, "units", "centimeters");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3706 %! assert (get (0, "screensize"), sz / dpi * 2.54, 0.5 / dpi * 2.54);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3707 %! set (0, "units", "points");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3708 %! assert (get (0, "screensize"), sz / dpi * 72, 0.5 / dpi * 72);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3709 %! set (0, "units", "normalized");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3710 %! assert (get (0, "screensize"), [0.0, 0.0, 1.0, 1.0]);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3711 %! set (0, "units", "pixels");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3712 %! assert (get (0, "screensize"), sz + [1, 1, 0, 0]);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3713 %! unwind_protect_cleanup
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3714 %! set (0, "units", old_units);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
3715 %! end_unwind_protect
14266
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
3716 */
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
3717
8560
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8557
diff changeset
3718 void
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3719 root_figure::properties::remove_child (const graphics_handle& gh)
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3720 {
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3721 gh_manager::pop_figure (gh);
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3722
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3723 graphics_handle cf = gh_manager::current_figure ();
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3724
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3725 xset (0, "currentfigure", cf.value ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
3726
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3727 base_properties::remove_child (gh);
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3728 }
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3729
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
3730 property_list
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
3731 root_figure::factory_properties = root_figure::init_factory_properties ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
3732
10733
f72a761a784c eliminate code duplication in reset_default_properties methods
John W. Eaton <jwe@octave.org>
parents: 10722
diff changeset
3733 void
f72a761a784c eliminate code duplication in reset_default_properties methods
John W. Eaton <jwe@octave.org>
parents: 10722
diff changeset
3734 root_figure::reset_default_properties (void)
f72a761a784c eliminate code duplication in reset_default_properties methods
John W. Eaton <jwe@octave.org>
parents: 10722
diff changeset
3735 {
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
3736 // empty list of local defaults
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
3737 default_properties = property_list ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
3738
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3739 xreset_default_properties (get_handle (),
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
3740 xproperties.factory_defaults ());
10733
f72a761a784c eliminate code duplication in reset_default_properties methods
John W. Eaton <jwe@octave.org>
parents: 10722
diff changeset
3741 }
f72a761a784c eliminate code duplication in reset_default_properties methods
John W. Eaton <jwe@octave.org>
parents: 10722
diff changeset
3742
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
3743 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
3744
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3745 void
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3746 figure::properties::set_currentaxes (const octave_value& v)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
3747 {
7378
3771971e8891 [project @ 2008-01-15 07:40:23 by jwe]
jwe
parents: 7373
diff changeset
3748 graphics_handle val (v);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
3749
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3750 if (error_state)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3751 return;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3752
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7059
diff changeset
3753 if (xisnan (val.value ()) || is_handle (val))
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3754 currentaxes = val;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3755 else
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3756 gripe_set_invalid ("currentaxes");
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3757 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3758
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3759 void
8266
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3760 figure::properties::remove_child (const graphics_handle& gh)
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3761 {
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3762 base_properties::remove_child (gh);
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3763
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3764 if (gh == currentaxes.handle_value ())
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3765 {
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3766 graphics_handle new_currentaxes;
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3767
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3768 Matrix kids = get_children ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3769
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3770 for (octave_idx_type i = 0; i < kids.numel (); i++)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3771 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
3772 graphics_handle kid = kids(i);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3773
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3774 graphics_object go = gh_manager::get_object (kid);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3775
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3776 if (go.isa ("axes"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3777 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3778 new_currentaxes = kid;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3779 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3780 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3781 }
8266
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3782
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3783 currentaxes = new_currentaxes;
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3784 }
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3785 }
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3786
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3787 void
19236
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3788 figure::properties::adopt (const graphics_handle& h)
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3789 {
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3790 base_properties::adopt (h);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3791
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3792 if (! get_currentaxes ().ok ())
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3793 {
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3794 graphics_object go = gh_manager::get_object (h);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3795
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3796 if (go.type () == "axes")
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3797 set_currentaxes (h.as_octave_value ());
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3798 }
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3799 }
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3800
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3801 /*
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3802 %!test
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3803 %! hf1 = figure ("visible", "off");
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3804 %! ax1 = subplot (1,2,1);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3805 %! ax2 = subplot (1,2,2);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3806 %! hf2 = figure ("visible", "off");
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3807 %! unwind_protect
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3808 %! set (ax2, "parent", hf2);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3809 %! assert (get (hf2, "currentaxes"), ax2);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3810 %! assert (get (hf1, "currentaxes"), ax1);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3811 %! set (ax1, "parent", hf2);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3812 %! assert (get (hf2, "currentaxes"), ax2);
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3813 %! unwind_protect_cleanup
19255
f984fc55a825 Remove lef-tover figures in test from cset 4c59f69fa52c
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19239
diff changeset
3814 %! close (hf1);
f984fc55a825 Remove lef-tover figures in test from cset 4c59f69fa52c
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19239
diff changeset
3815 %! close (hf2);
19236
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3816 %! end_unwind_protect
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3817 */
4c59f69fa52c figure: define adopted axes "currentaxes" if none is defined (bug #41573)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19209
diff changeset
3818
8266
81b124f463f9 properly update currentaxes when axes are deleted
John W. Eaton <jwe@octave.org>
parents: 8249
diff changeset
3819 void
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3820 figure::properties::set_visible (const octave_value& val)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3821 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3822 std::string s = val.string_value ();
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3823
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3824 if (! error_state)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3825 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3826 if (s == "on")
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3827 xset (0, "currentfigure", __myhandle__.value ());
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3828
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3829 visible = val;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3830 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3831 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
3832
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3833 Matrix
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3834 figure::properties::get_boundingbox (bool internal, const Matrix&) const
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3835 {
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3836 Matrix screen_size = screen_size_pixels ();
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3837 Matrix pos = (internal ?
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3838 get_position ().matrix_value () :
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3839 get_outerposition ().matrix_value ());
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3840
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3841 pos = convert_position (pos, get_units (), "pixels", screen_size);
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3842
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3843 pos(0)--;
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3844 pos(1)--;
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
3845 pos(1) = screen_size(1) - pos(1) - pos(3);
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3846
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3847 return pos;
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3848 }
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7440
diff changeset
3849
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3850 void
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3851 figure::properties::set_boundingbox (const Matrix& bb, bool internal,
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3852 bool do_notify_toolkit)
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3853 {
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3854 Matrix screen_size = screen_size_pixels ();
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3855 Matrix pos = bb;
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3856
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3857 pos(1) = screen_size(1) - pos(1) - pos(3);
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3858 pos(1)++;
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3859 pos(0)++;
9238
0ae2b6617005 Use display information from the root object to compute bounding boxes
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9185
diff changeset
3860 pos = convert_position (pos, "pixels", get_units (), screen_size);
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3861
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3862 if (internal)
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3863 set_position (pos, do_notify_toolkit);
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3864 else
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3865 set_outerposition (pos, do_notify_toolkit);
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3866 }
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3867
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3868 Matrix
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3869 figure::properties::map_from_boundingbox (double x, double y) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3870 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3871 Matrix bb = get_boundingbox (true);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3872 Matrix pos (1, 2, 0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3873
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3874 pos(0) = x;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3875 pos(1) = y;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3876
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3877 pos(1) = bb(3) - pos(1);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3878 pos(0)++;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3879 pos = convert_position (pos, "pixels", get_units (),
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3880 bb.extract_n (0, 2, 1, 2));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3881
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3882 return pos;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3883 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3884
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3885 Matrix
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3886 figure::properties::map_to_boundingbox (double x, double y) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3887 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3888 Matrix bb = get_boundingbox (true);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3889 Matrix pos (1, 2, 0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3890
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3891 pos(0) = x;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3892 pos(1) = y;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3893
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3894 pos = convert_position (pos, get_units (), "pixels",
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3895 bb.extract_n (0, 2, 1, 2));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3896 pos(0)--;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3897 pos(1) = bb(3) - pos(1);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3898
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3899 return pos;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3900 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
3901
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3902 void
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3903 figure::properties::set_position (const octave_value& v,
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3904 bool do_notify_toolkit)
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3905 {
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3906 if (! error_state)
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3907 {
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3908 Matrix old_bb, new_bb;
14367
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3909 bool modified = false;
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3910
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3911 old_bb = get_boundingbox (true);
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3912 modified = position.set (v, false, do_notify_toolkit);
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3913 new_bb = get_boundingbox (true);
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3914
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3915 if (old_bb != new_bb)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3916 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3917 if (old_bb(2) != new_bb(2) || old_bb(3) != new_bb(3))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3918 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3919 execute_resizefcn ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3920 update_boundingbox ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3921 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
3922 }
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3923
14367
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3924 if (modified)
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3925 {
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3926 position.run_listeners (POSTSET);
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3927 mark_modified ();
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3928 }
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
3929
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
3930 if (paperpositionmode.is ("auto"))
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
3931 paperposition.set (get_auto_paperposition ());
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3932 }
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3933 }
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3934
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3935 void
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3936 figure::properties::set_outerposition (const octave_value& v,
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3937 bool do_notify_toolkit)
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3938 {
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3939 if (! error_state)
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3940 {
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3941 if (outerposition.set (v, true, do_notify_toolkit))
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3942 {
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3943 mark_modified ();
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3944 }
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3945 }
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3946 }
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3947
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3948 void
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3949 figure::properties::set_paperunits (const octave_value& v)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3950 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3951 if (! error_state)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3952 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3953 caseless_str typ = get_papertype ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3954 caseless_str punits = v.string_value ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3955 if (! error_state)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3956 {
10994
9e1270a84a10 graphics.cc: Replace pagetype property value custom with <custom>.
Ben Abbott <bpabbott@mac.com>
parents: 10991
diff changeset
3957 if (punits.compare ("normalized") && typ.compare ("<custom>"))
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3958 error ("set: can't set the paperunits to normalized when the papertype is custom");
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3959 else
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3960 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3961 caseless_str old_paperunits = get_paperunits ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3962 if (paperunits.set (v, true))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3963 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3964 update_paperunits (old_paperunits);
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3965 mark_modified ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3966 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3967 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3968 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3969 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3970 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3971
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3972 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3973 figure::properties::set_papertype (const octave_value& v)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3974 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3975 if (! error_state)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3976 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3977 caseless_str typ = v.string_value ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3978 caseless_str punits = get_paperunits ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3979 if (! error_state)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3980 {
10994
9e1270a84a10 graphics.cc: Replace pagetype property value custom with <custom>.
Ben Abbott <bpabbott@mac.com>
parents: 10991
diff changeset
3981 if (punits.compare ("normalized") && typ.compare ("<custom>"))
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3982 error ("set: can't set the paperunits to normalized when the papertype is custom");
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3983 else
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3984 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3985 if (papertype.set (v, true))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3986 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3987 update_papertype ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3988 mark_modified ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3989 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3990 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3991 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3992 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3993 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3994
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3995 static Matrix
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3996 papersize_from_type (const caseless_str punits, const caseless_str typ)
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
3997 {
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3998 Matrix ret (1, 2, 1.0);
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3999
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4000 if (! punits.compare ("normalized"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4001 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4002 double in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4003 double mm2units;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
4004
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4005 if (punits.compare ("inches"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4006 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4007 in2units = 1.0;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4008 mm2units = 1 / 25.4 ;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4009 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4010 else if (punits.compare ("centimeters"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4011 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4012 in2units = 2.54;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4013 mm2units = 1 / 10.0;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4014 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4015 else // points
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4016 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4017 in2units = 72.0;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4018 mm2units = 72.0 / 25.4;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4019 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4020
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4021 if (typ.compare ("usletter"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4022 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4023 ret (0) = 8.5 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4024 ret (1) = 11.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4025 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4026 else if (typ.compare ("uslegal"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4027 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4028 ret (0) = 8.5 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4029 ret (1) = 14.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4030 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4031 else if (typ.compare ("tabloid"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4032 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4033 ret (0) = 11.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4034 ret (1) = 17.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4035 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4036 else if (typ.compare ("a0"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4037 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4038 ret (0) = 841.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4039 ret (1) = 1189.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4040 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4041 else if (typ.compare ("a1"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4042 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4043 ret (0) = 594.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4044 ret (1) = 841.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4045 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4046 else if (typ.compare ("a2"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4047 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4048 ret (0) = 420.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4049 ret (1) = 594.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4050 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4051 else if (typ.compare ("a3"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4052 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4053 ret (0) = 297.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4054 ret (1) = 420.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4055 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4056 else if (typ.compare ("a4"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4057 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4058 ret (0) = 210.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4059 ret (1) = 297.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4060 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4061 else if (typ.compare ("a5"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4062 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4063 ret (0) = 148.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4064 ret (1) = 210.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4065 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4066 else if (typ.compare ("b0"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4067 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4068 ret (0) = 1029.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4069 ret (1) = 1456.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4070 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4071 else if (typ.compare ("b1"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4072 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4073 ret (0) = 728.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4074 ret (1) = 1028.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4075 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4076 else if (typ.compare ("b2"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4077 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4078 ret (0) = 514.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4079 ret (1) = 728.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4080 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4081 else if (typ.compare ("b3"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4082 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4083 ret (0) = 364.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4084 ret (1) = 514.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4085 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4086 else if (typ.compare ("b4"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4087 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4088 ret (0) = 257.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4089 ret (1) = 364.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4090 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4091 else if (typ.compare ("b5"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4092 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4093 ret (0) = 182.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4094 ret (1) = 257.0 * mm2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4095 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4096 else if (typ.compare ("arch-a"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4097 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4098 ret (0) = 9.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4099 ret (1) = 12.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4100 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4101 else if (typ.compare ("arch-b"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4102 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4103 ret (0) = 12.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4104 ret (1) = 18.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4105 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4106 else if (typ.compare ("arch-c"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4107 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4108 ret (0) = 18.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4109 ret (1) = 24.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4110 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4111 else if (typ.compare ("arch-d"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4112 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4113 ret (0) = 24.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4114 ret (1) = 36.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4115 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4116 else if (typ.compare ("arch-e"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4117 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4118 ret (0) = 36.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4119 ret (1) = 48.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4120 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4121 else if (typ.compare ("a"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4122 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4123 ret (0) = 8.5 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4124 ret (1) = 11.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4125 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4126 else if (typ.compare ("b"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4127 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4128 ret (0) = 11.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4129 ret (1) = 17.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4130 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4131 else if (typ.compare ("c"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4132 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4133 ret (0) = 17.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4134 ret (1) = 22.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4135 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4136 else if (typ.compare ("d"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4137 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4138 ret (0) = 22.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4139 ret (1) = 34.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4140 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4141 else if (typ.compare ("e"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4142 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4143 ret (0) = 34.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4144 ret (1) = 43.0 * in2units;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4145 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4146 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
4147
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4148 return ret;
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4149 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4150
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4151
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4152 Matrix
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4153 figure::properties::get_auto_paperposition (void)
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4154 {
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4155 Matrix pos = get_position ().matrix_value ();
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4156 Matrix sz;
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4157
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4158 caseless_str funits = get_units ();
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4159 caseless_str punits = get_paperunits ();
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4160
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4161 // Convert position from figure units to paperunits
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4162 if (funits == "normalized" || punits == "normalized")
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4163 {
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4164 sz = screen_size_pixels ();
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4165 pos = convert_position (pos, funits, "inches", sz);
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4166
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4167 if (punits == "normalized")
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4168 sz = papersize_from_type ("points", get_papertype ());
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4169
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4170 pos = convert_position (pos, "inches", punits, sz);
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4171 }
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4172 else
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4173 pos = convert_position (pos, funits, punits, sz);
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4174
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4175 // Center the figure on the page
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4176 sz = get_papersize ().matrix_value ();
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4177
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4178 pos(0) = sz(0)/2 - pos(2)/2;
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4179 pos(1) = sz(1)/2 - pos(3)/2;
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4180
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4181 return pos;
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4182 }
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4183
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4184 /*
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4185 %!test
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4186 %! hf = figure ("visible", "off", "paperpositionmode", "auto");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4187 %! in_pos = [0 0 4 5];
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4188 %! tol = 20 * eps ();
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4189 %! unwind_protect
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4190 %! ## paperpositionmode "auto" converts figure size to paper units
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4191 %! set (hf, "units", "inches");
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4192 %! set (hf, "position", in_pos);
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4193 %! set (hf, "paperunits", "centimeters");
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4194 %! psz = get (hf, "papersize");
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4195 %! fsz = in_pos(3:4) * 2.54;
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4196 %! pos = [(psz/2 .- fsz/2) fsz];
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4197 %! set (hf, "paperpositionmode", "auto");
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4198 %! assert (get (hf, "paperposition"), pos, tol)
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4199 %! unwind_protect_cleanup
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4200 %! close (hf);
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4201 %! end_unwind_protect
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4202
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4203 %!test
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4204 %! hf = figure ("visible", "off", "paperpositionmode", "auto");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4205 %! in_pos = [0 0 4 5];
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4206 %! tol = 20 * eps ();
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4207 %! unwind_protect
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4208 %! ## likewise with normalized units
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4209 %! set (hf, "units", "inches");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4210 %! set (hf, "position", in_pos);
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4211 %! psz = get (hf, "papersize");
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4212 %! set (hf, "paperunits", "normalized");
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4213 %! fsz = in_pos(3:4) ./ psz;
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4214 %! pos = [([0.5 0.5] .- fsz/2) fsz];
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4215 %! assert (get (hf, "paperposition"), pos, tol)
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4216 %! unwind_protect_cleanup
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4217 %! close (hf);
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4218 %! end_unwind_protect
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4219
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4220 %!test
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4221 %! hf = figure ("visible", "off", "paperpositionmode", "auto");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4222 %! in_pos = [0 0 4 5];
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4223 %! tol = 20 * eps ();
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4224 %! unwind_protect
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4225 %! ## changing papertype updates paperposition
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4226 %! set (hf, "units", "inches");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4227 %! set (hf, "position", in_pos);
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4228 %! set (hf, "papertype", "a4");
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4229 %! psz = get (hf, "papersize");
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4230 %! fsz = in_pos(3:4);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4231 %! pos = [(psz/2 .- fsz/2) fsz];
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4232 %! assert (get (hf, "paperposition"), pos, tol)
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4233 %! unwind_protect_cleanup
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4234 %! close (hf);
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4235 %! end_unwind_protect
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4236
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4237 %!test
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4238 %! hf = figure ("visible", "off", "paperpositionmode", "auto");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4239 %! in_pos = [0 0 4 5];
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4240 %! tol = 20 * eps ();
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4241 %! unwind_protect
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4242 %! ## lanscape updates paperposition
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4243 %! set (hf, "units", "inches");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4244 %! set (hf, "position", in_pos);
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4245 %! set (hf, "paperorientation", "landscape");
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4246 %! psz = get (hf, "papersize");
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4247 %! fsz = in_pos(3:4);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
4248 %! pos = [(psz/2 .- fsz/2) fsz];
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4249 %! assert (get (hf, "paperposition"), pos, tol)
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4250 %! unwind_protect_cleanup
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4251 %! close (hf);
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4252 %! end_unwind_protect
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4253
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4254 %!test
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4255 %! hf = figure ("visible", "off", "paperpositionmode", "auto");
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4256 %! in_pos = [0 0 4 5];
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4257 %! unwind_protect
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4258 %! ## back to manual mode
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4259 %! set (hf, "paperposition", in_pos * 1.1)
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4260 %! assert (get (hf, "paperpositionmode"), "manual")
19082
2420a4f22998 Fix tolerance issues in %!test from cset70ea5a2856fe (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19081
diff changeset
4261 %! assert (get (hf, "paperposition"), in_pos * 1.1)
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4262 %! unwind_protect_cleanup
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4263 %! close (hf);
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4264 %! end_unwind_protect
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4265 */
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4266
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4267 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4268 figure::properties::update_paperunits (const caseless_str& old_paperunits)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4269 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4270 Matrix pos = get_paperposition ().matrix_value ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4271 Matrix sz = get_papersize ().matrix_value ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
4272
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4273 pos(0) /= sz(0);
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4274 pos(1) /= sz(1);
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4275 pos(2) /= sz(0);
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4276 pos(3) /= sz(1);
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4277
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4278 std::string porient = get_paperorientation ();
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4279 caseless_str punits = get_paperunits ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4280 caseless_str typ = get_papertype ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4281
10994
9e1270a84a10 graphics.cc: Replace pagetype property value custom with <custom>.
Ben Abbott <bpabbott@mac.com>
parents: 10991
diff changeset
4282 if (typ.compare ("<custom>"))
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4283 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4284 if (old_paperunits.compare ("centimeters"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4285 {
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4286 sz(0) /= 2.54;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4287 sz(1) /= 2.54;
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4288 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4289 else if (old_paperunits.compare ("points"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4290 {
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4291 sz(0) /= 72.0;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4292 sz(1) /= 72.0;
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4293 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4294
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4295 if (punits.compare ("centimeters"))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4296 {
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4297 sz(0) *= 2.54;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4298 sz(1) *= 2.54;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4299 }
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4300 else if (punits.compare ("points"))
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4301 {
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4302 sz(0) *= 72.0;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4303 sz(1) *= 72.0;
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4304 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4305 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4306 else
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4307 {
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4308 sz = papersize_from_type (punits, typ);
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4309 if (porient == "landscape")
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4310 std::swap (sz(0), sz(1));
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4311 }
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4312
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4313 pos(0) *= sz(0);
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4314 pos(1) *= sz(1);
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4315 pos(2) *= sz(0);
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4316 pos(3) *= sz(1);
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4317
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4318 papersize.set (octave_value (sz));
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4319 paperposition.set (octave_value (pos));
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4320 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4321
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4322 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4323 figure::properties::update_papertype (void)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4324 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4325 caseless_str typ = get_papertype ();
10994
9e1270a84a10 graphics.cc: Replace pagetype property value custom with <custom>.
Ben Abbott <bpabbott@mac.com>
parents: 10991
diff changeset
4326 if (! typ.compare ("<custom>"))
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4327 {
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4328 Matrix sz = papersize_from_type (get_paperunits (), typ);
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4329 if (get_paperorientation () == "landscape")
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4330 std::swap (sz(0), sz(1));
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4331 // Call papersize.set rather than set_papersize to avoid loops
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4332 // between update_papersize and update_papertype
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4333 papersize.set (octave_value (sz));
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4334 }
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4335
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4336 if (paperpositionmode.is ("auto"))
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4337 paperposition.set (get_auto_paperposition ());
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4338 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4339
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4340 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4341 figure::properties::update_papersize (void)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4342 {
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4343 Matrix sz = get_papersize ().matrix_value ();
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4344 if (sz(0) > sz(1))
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4345 {
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4346 std::swap (sz(0), sz(1));
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4347 papersize.set (octave_value (sz));
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4348 paperorientation.set (octave_value ("landscape"));
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4349 }
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4350 else
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4351 {
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4352 paperorientation.set ("portrait");
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4353 }
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4354 std::string punits = get_paperunits ();
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4355 if (punits == "centimeters")
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4356 {
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4357 sz(0) /= 2.54;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4358 sz(1) /= 2.54;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4359 }
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4360 else if (punits == "points")
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4361 {
14498
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4362 sz(0) /= 72.0;
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4363 sz(1) /= 72.0;
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4364 }
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4365 if (punits == "normalized")
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4366 {
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4367 caseless_str typ = get_papertype ();
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4368 if (get_papertype () == "<custom>")
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4369 error ("set: can't set the papertype to <custom> when the paperunits is normalized");
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4370 }
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4371 else
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4372 {
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4373 // TODO - the papersizes info is also in papersize_from_type().
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4374 // Both should be rewritten to avoid the duplication.
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4375 std::string typ = "<custom>";
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4376 const double mm2in = 1.0 / 25.4;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4377 const double tol = 0.01;
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4378
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4379 if (std::abs (sz(0) - 8.5) + std::abs (sz(1) - 11.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4380 typ = "usletter";
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4381 else if (std::abs (sz(0) - 8.5) + std::abs (sz(1) - 14.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4382 typ = "uslegal";
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4383 else if (std::abs (sz(0) - 11.0) + std::abs (sz(1) - 17.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4384 typ = "tabloid";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4385 else if (std::abs (sz(0) - 841.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4386 + std::abs (sz(1) - 1198.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4387 typ = "a0";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4388 else if (std::abs (sz(0) - 594.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4389 + std::abs (sz(1) - 841.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4390 typ = "a1";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4391 else if (std::abs (sz(0) - 420.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4392 + std::abs (sz(1) - 594.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4393 typ = "a2";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4394 else if (std::abs (sz(0) - 297.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4395 + std::abs (sz(1) - 420.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4396 typ = "a3";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4397 else if (std::abs (sz(0) - 210.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4398 + std::abs (sz(1) - 297.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4399 typ = "a4";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4400 else if (std::abs (sz(0) - 148.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4401 + std::abs (sz(1) - 210.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4402 typ = "a5";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4403 else if (std::abs (sz(0) - 1029.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4404 + std::abs (sz(1) - 1456.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4405 typ = "b0";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4406 else if (std::abs (sz(0) - 728.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4407 + std::abs (sz(1) - 1028.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4408 typ = "b1";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4409 else if (std::abs (sz(0) - 514.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4410 + std::abs (sz(1) - 728.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4411 typ = "b2";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4412 else if (std::abs (sz(0) - 364.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4413 + std::abs (sz(1) - 514.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4414 typ = "b3";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4415 else if (std::abs (sz(0) - 257.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4416 + std::abs (sz(1) - 364.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4417 typ = "b4";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4418 else if (std::abs (sz(0) - 182.0 * mm2in)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4419 + std::abs (sz(1) - 257.0 * mm2in) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4420 typ = "b5";
19790
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 18961
diff changeset
4421 else if (std::abs (sz(0) - 9.0)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4422 + std::abs (sz(1) - 12.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4423 typ = "arch-a";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4424 else if (std::abs (sz(0) - 12.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4425 + std::abs (sz(1) - 18.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4426 typ = "arch-b";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4427 else if (std::abs (sz(0) - 18.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4428 + std::abs (sz(1) - 24.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4429 typ = "arch-c";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4430 else if (std::abs (sz(0) - 24.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4431 + std::abs (sz(1) - 36.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4432 typ = "arch-d";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4433 else if (std::abs (sz(0) - 36.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4434 + std::abs (sz(1) - 48.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4435 typ = "arch-e";
19790
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 18961
diff changeset
4436 else if (std::abs (sz(0) - 8.5)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4437 + std::abs (sz(1) - 11.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4438 typ = "a";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4439 else if (std::abs (sz(0) - 11.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4440 + std::abs (sz(1) - 17.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4441 typ = "b";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4442 else if (std::abs (sz(0) - 17.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4443 + std::abs (sz(1) - 22.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4444 typ = "c";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4445 else if (std::abs (sz(0) - 22.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4446 + std::abs (sz(1) - 34.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4447 typ = "d";
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4448 else if (std::abs (sz(0) - 34.0)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4449 + std::abs (sz(1) - 43.0) < tol)
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4450 typ = "e";
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4451 // Call papertype.set rather than set_papertype to avoid loops between
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4452 // update_papersize and update_papertype
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4453 papertype.set (typ);
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4454 }
14498
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4455 if (punits == "centimeters")
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4456 {
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4457 sz(0) *= 2.54;
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4458 sz(1) *= 2.54;
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4459 }
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4460 else if (punits == "points")
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4461 {
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4462 sz(0) *= 72.0;
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4463 sz(1) *= 72.0;
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4464 }
14457
008a29999c3d Save the papersize property in the proper orientation.
Ben Abbott <bpabbott@mac.com>
parents: 14429
diff changeset
4465 if (get_paperorientation () == "landscape")
008a29999c3d Save the papersize property in the proper orientation.
Ben Abbott <bpabbott@mac.com>
parents: 14429
diff changeset
4466 {
008a29999c3d Save the papersize property in the proper orientation.
Ben Abbott <bpabbott@mac.com>
parents: 14429
diff changeset
4467 std::swap (sz(0), sz(1));
008a29999c3d Save the papersize property in the proper orientation.
Ben Abbott <bpabbott@mac.com>
parents: 14429
diff changeset
4468 papersize.set (octave_value (sz));
008a29999c3d Save the papersize property in the proper orientation.
Ben Abbott <bpabbott@mac.com>
parents: 14429
diff changeset
4469 }
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4470
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4471 if (paperpositionmode.is ("auto"))
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4472 paperposition.set (get_auto_paperposition ());
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4473 }
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4474
14498
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4475 /*
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4476 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4477 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4478 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4479 %! set (hf, "paperunits", "inches");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4480 %! set (hf, "papersize", [5, 4]);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4481 %! set (hf, "paperunits", "points");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4482 %! assert (get (hf, "papersize"), [5, 4] * 72, 1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4483 %! papersize = get (hf, "papersize");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4484 %! set (hf, "papersize", papersize + 1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4485 %! set (hf, "papersize", papersize);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4486 %! assert (get (hf, "papersize"), [5, 4] * 72, 1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4487 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4488 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4489 %! end_unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4490
14498
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4491 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4492 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4493 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4494 %! set (hf, "paperunits", "inches");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4495 %! set (hf, "papersize", [5, 4]);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4496 %! set (hf, "paperunits", "centimeters");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4497 %! assert (get (hf, "papersize"), [5, 4] * 2.54, 2.54/72);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4498 %! papersize = get (hf, "papersize");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4499 %! set (hf, "papersize", papersize + 1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4500 %! set (hf, "papersize", papersize);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4501 %! assert (get (hf, "papersize"), [5, 4] * 2.54, 2.54/72);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4502 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4503 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4504 %! end_unwind_protect
14498
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4505 */
36cfbd23fe9f Fix papersize updater. Bug # 35908.
Ben Abbott <bpabbott@mac.com>
parents: 14483
diff changeset
4506
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4507 void
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4508 figure::properties::update_paperorientation (void)
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4509 {
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4510 std::string porient = get_paperorientation ();
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4511 Matrix sz = get_papersize ().matrix_value ();
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4512 Matrix pos = get_paperposition ().matrix_value ();
14258
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4513 if ((sz(0) > sz(1) && porient == "portrait")
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4514 || (sz(0) < sz(1) && porient == "landscape"))
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4515 {
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4516 std::swap (sz(0), sz(1));
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4517 std::swap (pos(0), pos(1));
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4518 std::swap (pos(2), pos(3));
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4519 // Call papertype.set rather than set_papertype to avoid loops
08779abcb640 maint: Style fixes for 5cc69bafe3b9
Rik <octave@nomad.inbox5.com>
parents: 14257
diff changeset
4520 // between update_papersize and update_papertype
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4521 papersize.set (octave_value (sz));
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4522 paperposition.set (octave_value (pos));
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4523 }
18962
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4524
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4525 if (paperpositionmode.is ("auto"))
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18946
diff changeset
4526 paperposition.set (get_auto_paperposition ());
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4527 }
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4528
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4529 /*
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4530 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4531 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4532 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4533 %! tol = 100 * eps ();
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4534 %! ## UPPER case and MiXed case is part of test and should not be changed.
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4535 %! set (hf, "paperorientation", "PORTRAIT");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4536 %! set (hf, "paperunits", "inches");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4537 %! set (hf, "papertype", "USletter");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4538 %! assert (get (hf, "papersize"), [8.5, 11.0], tol);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4539 %! set (hf, "paperorientation", "Landscape");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4540 %! assert (get (hf, "papersize"), [11.0, 8.5], tol);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4541 %! set (hf, "paperunits", "centimeters");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4542 %! assert (get (hf, "papersize"), [11.0, 8.5] * 2.54, tol);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4543 %! set (hf, "papertype", "a4");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4544 %! assert (get (hf, "papersize"), [29.7, 21.0], tol);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4545 %! set (hf, "paperunits", "inches", "papersize", [8.5, 11.0]);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4546 %! assert (get (hf, "papertype"), "usletter");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4547 %! assert (get (hf, "paperorientation"), "portrait");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4548 %! set (hf, "papersize", [11.0, 8.5]);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4549 %! assert (get (hf, "papertype"), "usletter");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4550 %! assert (get (hf, "paperorientation"), "landscape");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4551 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4552 %! close (hf);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4553 %! end_unwind_protect
14257
5cc69bafe3b9 Add updating for figure paperorientation property. Bug # 35329.
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
4554 */
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4555
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4556 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4557 figure::properties::set_units (const octave_value& v)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4558 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4559 if (! error_state)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4560 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4561 caseless_str old_units = get_units ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4562 if (units.set (v, true))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4563 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4564 update_units (old_units);
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4565 mark_modified ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4566 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4567 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4568 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4569
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4570 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4571 figure::properties::update_units (const caseless_str& old_units)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4572 {
14367
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
4573 position.set (convert_position (get_position ().matrix_value (), old_units,
ba01a38bc5c1 Use internal bounding box in figure::properties::set_position.
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
4574 get_units (), screen_size_pixels ()), false);
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4575 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
4576
14266
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
4577 /*
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
4578 %!test
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4579 %! hf = figure ("visible", "off");
17237
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4580 %! old_units = get (0, "units");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4581 %! unwind_protect
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4582 %! set (0, "units", "pixels");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4583 %! rsz = get (0, "screensize");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4584 %! set (gcf (), "units", "pixels");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4585 %! fsz = get (gcf (), "position");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4586 %! set (gcf (), "units", "normalized");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4587 %! pos = get (gcf (), "position");
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4588 %! assert (pos, (fsz - [1, 1, 0, 0]) ./ rsz([3, 4, 3, 4]));
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4589 %! unwind_protect_cleanup
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4590 %! close (hf);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4591 %! set (0, "units", old_units);
5f14fc8feba3 graphics.cc: Restore default graphics properties after %!tests.
Rik <rik@octave.org>
parents: 17223
diff changeset
4592 %! end_unwind_protect
14266
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
4593 */
37ca58f9a887 When root_figure units = normalized, screensize = [0 0 1 1].
Ben Abbott <bpabbott@mac.com>
parents: 14258
diff changeset
4594
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4595 std::string
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4596 figure::properties::get_title (void) const
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4597 {
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4598 if (is_numbertitle ())
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4599 {
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4600 std::ostringstream os;
8062
e04a4beeb283 graphics.cc (figure::properties::get_title): avoid gcc warning
John W. Eaton <jwe@octave.org>
parents: 8061
diff changeset
4601 std::string nm = get_name ();
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4602
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4603 os << "Figure " << __myhandle__.value ();
8062
e04a4beeb283 graphics.cc (figure::properties::get_title): avoid gcc warning
John W. Eaton <jwe@octave.org>
parents: 8061
diff changeset
4604 if (! nm.empty ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
4605 os << ": " << get_name ();
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4606
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4607 return os.str ();
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4608 }
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4609 else
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4610 return get_name ();
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4611 }
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
4612
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4613 octave_value
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
4614 figure::get_default (const caseless_str& name) const
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4615 {
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4616 octave_value retval = default_properties.lookup (name);
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4617
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4618 if (retval.is_undefined ())
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4619 {
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4620 graphics_handle parent = get_parent ();
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4621 graphics_object parent_obj = gh_manager::get_object (parent);
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4622
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4623 retval = parent_obj.get_default (name);
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4624 }
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4625
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4626 return retval;
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4627 }
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
4628
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
4629 void
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
4630 figure::reset_default_properties (void)
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
4631 {
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4632 // empty list of local defaults
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4633 default_properties = property_list ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4634
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4635 property_list::pval_map_type plist = xproperties.factory_defaults ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4636 plist.erase ("units");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4637 plist.erase ("position");
19851
50f14692e33b Freset: do not reset figure outerposition (part of bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19843
diff changeset
4638 plist.erase ("outerposition");
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4639 plist.erase ("paperunits");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4640 plist.erase ("paperposition");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4641 plist.erase ("windowstyle");
19867
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19864
diff changeset
4642
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
4643 xreset_default_properties (get_handle (), plist);
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
4644 }
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
4645
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
4646 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
4647
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4648 void
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4649 axes::properties::init (void)
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4650 {
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4651 position.add_constraint (dim_vector (1, 4));
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4652 outerposition.add_constraint (dim_vector (1, 4));
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
4653 tightinset.add_constraint (dim_vector (1, 4));
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
4654 looseinset.add_constraint (dim_vector (1, 4));
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4655 colororder.add_constraint (dim_vector (-1, 3));
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4656 dataaspectratio.add_constraint (dim_vector (1, 3));
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4657 plotboxaspectratio.add_constraint (dim_vector (1, 3));
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
4658 alim.add_constraint (2);
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
4659 clim.add_constraint (2);
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4660 xlim.add_constraint (2);
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4661 ylim.add_constraint (2);
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4662 zlim.add_constraint (2);
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4663 xtick.add_constraint (dim_vector (1, -1));
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4664 ytick.add_constraint (dim_vector (1, -1));
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4665 ztick.add_constraint (dim_vector (1, -1));
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
4666 ticklength.add_constraint (dim_vector (1, 2));
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4667 Matrix vw (1, 2, 0);
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4668 vw(1) = 90;
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4669 view = vw;
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4670 view.add_constraint (dim_vector (1, 2));
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4671 cameraposition.add_constraint (dim_vector (1, 3));
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
4672 cameratarget.add_constraint (dim_vector (1, 3));
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4673 Matrix upv (1, 3, 0.0);
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4674 upv(2) = 1.0;
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4675 cameraupvector = upv;
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4676 cameraupvector.add_constraint (dim_vector (1, 3));
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4677 currentpoint.add_constraint (dim_vector (2, 3));
17631
94dd9bba06a0 Fix validation of array properties to set(), avoid segfaults (bug #bug #35687).
Rik <rik@octave.org>
parents: 17626
diff changeset
4678 // No constraints for hidden transform properties
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
4679 update_font ();
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4680
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4681 x_zlim.resize (1, 2);
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4682
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4683 sx = "linear";
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4684 sy = "linear";
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4685 sz = "linear";
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4686
9403
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4687 calc_ticklabels (xtick, xticklabel, xscale.is ("log"));
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4688 calc_ticklabels (ytick, yticklabel, yscale.is ("log"));
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4689 calc_ticklabels (ztick, zticklabel, zscale.is ("log"));
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4690
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4691 xset (xlabel.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4692 xset (ylabel.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4693 xset (zlabel.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4694 xset (title.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4695
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4696 xset (xlabel.handle_value (), "horizontalalignment", "center");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4697 xset (xlabel.handle_value (), "horizontalalignmentmode", "auto");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4698 xset (ylabel.handle_value (), "horizontalalignment", "center");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4699 xset (ylabel.handle_value (), "horizontalalignmentmode", "auto");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4700 xset (zlabel.handle_value (), "horizontalalignment", "right");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4701 xset (zlabel.handle_value (), "horizontalalignmentmode", "auto");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4702 xset (title.handle_value (), "horizontalalignment", "center");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4703 xset (title.handle_value (), "horizontalalignmentmode", "auto");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4704
16204
92f8bfae9b13 Set default xlabel "verticalalignment" to "top".
Rik <rik@octave.org>
parents: 16201
diff changeset
4705 xset (xlabel.handle_value (), "verticalalignment", "top");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4706 xset (xlabel.handle_value (), "verticalalignmentmode", "auto");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4707 xset (ylabel.handle_value (), "verticalalignment", "bottom");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4708 xset (ylabel.handle_value (), "verticalalignmentmode", "auto");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4709 xset (title.handle_value (), "verticalalignment", "bottom");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4710 xset (title.handle_value (), "verticalalignmentmode", "auto");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4711
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4712 xset (ylabel.handle_value (), "rotation", 90.0);
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4713 xset (ylabel.handle_value (), "rotationmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4714
9403
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4715 xset (zlabel.handle_value (), "visible", "off");
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
4716
9403
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4717 xset (xlabel.handle_value (), "clipping", "off");
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4718 xset (ylabel.handle_value (), "clipping", "off");
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4719 xset (zlabel.handle_value (), "clipping", "off");
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
4720 xset (title.handle_value (), "clipping", "off");
8557
ab82e19002c4 better compatibility for axis label properties
John W. Eaton <jwe@octave.org>
parents: 8503
diff changeset
4721
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4722 xset (xlabel.handle_value (), "autopos_tag", "xlabel");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4723 xset (ylabel.handle_value (), "autopos_tag", "ylabel");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4724 xset (zlabel.handle_value (), "autopos_tag", "zlabel");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4725 xset (title.handle_value (), "autopos_tag", "title");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4726
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4727 adopt (xlabel.handle_value ());
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4728 adopt (ylabel.handle_value ());
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4729 adopt (zlabel.handle_value ());
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4730 adopt (title.handle_value ());
12467
2f83974d5a6d implement looseinset property for axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12458
diff changeset
4731
2f83974d5a6d implement looseinset property for axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12458
diff changeset
4732 Matrix tlooseinset = default_axes_position ();
2f83974d5a6d implement looseinset property for axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12458
diff changeset
4733 tlooseinset(2) = 1-tlooseinset(0)-tlooseinset(2);
2f83974d5a6d implement looseinset property for axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12458
diff changeset
4734 tlooseinset(3) = 1-tlooseinset(1)-tlooseinset(3);
2f83974d5a6d implement looseinset property for axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12458
diff changeset
4735 looseinset = tlooseinset;
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4736 }
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4737
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4738 Matrix
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4739 axes::properties::calc_tightbox (const Matrix& init_pos)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4740 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4741 Matrix pos = init_pos;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4742 graphics_object obj = gh_manager::get_object (get_parent ());
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4743 Matrix parent_bb = obj.get_properties ().get_boundingbox (true);
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
4744 Matrix ext = get_extent (true, true);
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4745 ext(1) = parent_bb(3) - ext(1) - ext(3);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4746 ext(0)++;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4747 ext(1)++;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4748 ext = convert_position (ext, "pixels", get_units (),
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4749 parent_bb.extract_n (0, 2, 1, 2));
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4750 if (ext(0) < pos(0))
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4751 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4752 pos(2) += pos(0)-ext(0);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4753 pos(0) = ext(0);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4754 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4755 if (ext(0)+ext(2) > pos(0)+pos(2))
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4756 pos(2) = ext(0)+ext(2)-pos(0);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4757
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4758 if (ext(1) < pos(1))
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4759 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4760 pos(3) += pos(1)-ext(1);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4761 pos(1) = ext(1);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4762 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4763 if (ext(1)+ext(3) > pos(1)+pos(3))
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4764 pos(3) = ext(1)+ext(3)-pos(1);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4765 return pos;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4766 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
4767
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
4768 void
7860
67edbcb19665 rudimentry (i.e. no font metrics) sync of axes.position and axes.outerposition
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7859
diff changeset
4769 axes::properties::sync_positions (void)
67edbcb19665 rudimentry (i.e. no font metrics) sync of axes.position and axes.outerposition
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7859
diff changeset
4770 {
17011
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4771 // First part is equivalent to `update_tightinset ()'
17216
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4772 if (activepositionproperty.is ("position"))
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4773 update_position ();
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4774 else
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4775 update_outerposition ();
17011
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4776 caseless_str old_units = get_units ();
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4777 set_units ("normalized");
16832
e528beb2d774 Initialization and updating of tightinset and looseinset properties.
Ben Abbott <bpabbott@mac.com>
parents: 16831
diff changeset
4778 Matrix pos = position.get ().matrix_value ();
e528beb2d774 Initialization and updating of tightinset and looseinset properties.
Ben Abbott <bpabbott@mac.com>
parents: 16831
diff changeset
4779 Matrix outpos = outerposition.get ().matrix_value ();
e528beb2d774 Initialization and updating of tightinset and looseinset properties.
Ben Abbott <bpabbott@mac.com>
parents: 16831
diff changeset
4780 Matrix tightpos = calc_tightbox (pos);
17011
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4781 Matrix tinset (1, 4, 1.0);
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4782 tinset(0) = pos(0)-tightpos(0);
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4783 tinset(1) = pos(1)-tightpos(1);
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4784 tinset(2) = tightpos(0)+tightpos(2)-pos(0)-pos(2);
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4785 tinset(3) = tightpos(1)+tightpos(3)-pos(1)-pos(3);
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4786 tightinset = tinset;
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4787 set_units (old_units);
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4788 update_transform ();
17260
92effb035b97 Update axes position/outerpostion before and after tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17237
diff changeset
4789 if (activepositionproperty.is ("position"))
92effb035b97 Update axes position/outerpostion before and after tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17237
diff changeset
4790 update_position ();
92effb035b97 Update axes position/outerpostion before and after tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17237
diff changeset
4791 else
92effb035b97 Update axes position/outerpostion before and after tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17237
diff changeset
4792 update_outerposition ();
17011
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
4793 }
7860
67edbcb19665 rudimentry (i.e. no font metrics) sync of axes.position and axes.outerposition
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7859
diff changeset
4794
17024
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4795 /*
17286
d5efffe5a789 graphics.cc: Condition tests on HAVE_FLTK
Mike Miller <mtmiller@ieee.org>
parents: 17281
diff changeset
4796 %!testif HAVE_FLTK
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4797 %! hf = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4798 %! graphics_toolkit (hf, "fltk");
17024
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4799 %! unwind_protect
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4800 %! subplot(2,1,1); plot(rand(10,1)); subplot(2,1,2); plot(rand(10,1));
17024
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4801 %! hax = findall (gcf (), "type", "axes");
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4802 %! positions = cell2mat (get (hax, "position"));
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4803 %! outerpositions = cell2mat (get (hax, "outerposition"));
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4804 %! looseinsets = cell2mat (get (hax, "looseinset"));
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4805 %! tightinsets = cell2mat (get (hax, "tightinset"));
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17123
diff changeset
4806 %! subplot(2,1,1); plot(rand(10,1)); subplot(2,1,2); plot(rand(10,1));
17024
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4807 %! hax = findall (gcf (), "type", "axes");
17216
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4808 %! assert (cell2mat (get (hax, "position")), positions, 1e-4);
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4809 %! assert (cell2mat (get (hax, "outerposition")), outerpositions, 1e-4);
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4810 %! assert (cell2mat (get (hax, "looseinset")), looseinsets, 1e-4);
283422a219a2 Update axes position/outerpostion prior to calcuating tightinset.
Ben Abbott <bpabbott@mac.com>
parents: 17192
diff changeset
4811 %! assert (cell2mat (get (hax, "tightinset")), tightinsets, 1e-4);
17024
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4812 %! unwind_protect_cleanup
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4813 %! close (hf);
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4814 %! end_unwind_protect
17286
d5efffe5a789 graphics.cc: Condition tests on HAVE_FLTK
Mike Miller <mtmiller@ieee.org>
parents: 17281
diff changeset
4815 %!testif HAVE_FLTK
17222
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4816 %! hf = figure ("visible", "off");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4817 %! graphics_toolkit (hf, "fltk");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4818 %! fpos = get (hf, "position");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4819 %! unwind_protect
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4820 %! plot (rand (3))
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4821 %! position = get (gca, "position");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4822 %! outerposition = get (gca, "outerposition");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4823 %! looseinset = get (gca, "looseinset");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4824 %! tightinset = get (gca, "tightinset");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4825 %! set (hf, "position", [fpos(1:2), 2*fpos(3:4)])
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4826 %! set (hf, "position", fpos);
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4827 %! assert (get (gca, "outerposition"), outerposition, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4828 %! assert (get (gca, "position"), position, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4829 %! assert (get (gca, "looseinset"), looseinset, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4830 %! assert (get (gca, "tightinset"), tightinset, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4831 %! unwind_protect_cleanup
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4832 %! close (hf);
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4833 %! end_unwind_protect
17286
d5efffe5a789 graphics.cc: Condition tests on HAVE_FLTK
Mike Miller <mtmiller@ieee.org>
parents: 17281
diff changeset
4834 %!testif HAVE_FLTK
17222
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4835 %! hf = figure ("visible", "off");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4836 %! graphics_toolkit (hf, "fltk");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4837 %! fpos = get (hf, "position");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4838 %! set (gca, "activepositionproperty", "position")
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4839 %! unwind_protect
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4840 %! plot (rand (3))
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4841 %! position = get (gca, "position");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4842 %! outerposition = get (gca, "outerposition");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4843 %! looseinset = get (gca, "looseinset");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4844 %! tightinset = get (gca, "tightinset");
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4845 %! set (hf, "position", [fpos(1:2), 2*fpos(3:4)])
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4846 %! set (hf, "position", fpos);
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4847 %! assert (get (gca, "position"), position, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4848 %! assert (get (gca, "outerposition"), outerposition, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4849 %! assert (get (gca, "looseinset"), looseinset, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4850 %! assert (get (gca, "tightinset"), tightinset, 0.001)
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4851 %! unwind_protect_cleanup
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4852 %! close (hf);
8e196132bbea Tests for for updating axes properties when figure position changes.
Ben Abbott <bpabbott@mac.com>
parents: 17216
diff changeset
4853 %! end_unwind_protect
17024
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4854 */
c358c6e7416b Add test to graphics.cc for initial tightinset value.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
4855
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4856 void
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4857 axes::properties::set_text_child (handle_property& hp,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
4858 const std::string& who,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
4859 const octave_value& v)
6962
9ac23c7f1c37 [project @ 2007-10-05 20:52:19 by jwe]
jwe
parents: 6945
diff changeset
4860 {
19279
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4861 if (v.is_string ())
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4862 {
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4863 xset (hp.handle_value (), "string", v);
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4864 return;
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4865 }
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4866
10265
8c583af2cf64 validate text object children of axes objects
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
4867 graphics_handle val;
19279
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4868 graphics_object go = gh_manager::get_object (gh_manager::lookup (v));
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4869
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4870 if (go.isa ("text"))
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4871 val = ::reparent (v, "set", who, __myhandle__, false);
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4872 else
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4873 {
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4874 std::string cname = v.class_name ();
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4875
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4876 error ("set: expecting text graphics object or character string for %s property, found %s",
3e0720bd6bfc Fix setting axes default x/y/zlabel with string values (bug #34755)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19278
diff changeset
4877 who.c_str (), cname.c_str ());
10265
8c583af2cf64 validate text object children of axes objects
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
4878 }
6962
9ac23c7f1c37 [project @ 2007-10-05 20:52:19 by jwe]
jwe
parents: 6945
diff changeset
4879
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4880 if (! error_state)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4881 {
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4882 xset (val, "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4883
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4884 gh_manager::free (hp.handle_value ());
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4885
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4886 base_properties::remove_child (hp.handle_value ());
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4887
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4888 hp = val;
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4889
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4890 adopt (hp.handle_value ());
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4891 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4892 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4893
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4894 void
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4895 axes::properties::set_xlabel (const octave_value& v)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4896 {
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4897 set_text_child (xlabel, "xlabel", v);
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4898 xset (xlabel.handle_value (), "positionmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4899 xset (xlabel.handle_value (), "rotationmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4900 xset (xlabel.handle_value (), "horizontalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4901 xset (xlabel.handle_value (), "verticalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4902 xset (xlabel.handle_value (), "clipping", "off");
11598
62b7ea59a6ff fixing color mismatch between axis and axis label
Konstantinos Poulios <logari81@googlemail.com>
parents: 11586
diff changeset
4903 xset (xlabel.handle_value (), "color", get_xcolor ());
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4904 xset (xlabel.handle_value (), "autopos_tag", "xlabel");
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
4905 update_xlabel_position ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4906 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4907
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4908 void
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4909 axes::properties::set_ylabel (const octave_value& v)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4910 {
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4911 set_text_child (ylabel, "ylabel", v);
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4912 xset (ylabel.handle_value (), "positionmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4913 xset (ylabel.handle_value (), "rotationmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4914 xset (ylabel.handle_value (), "horizontalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4915 xset (ylabel.handle_value (), "verticalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4916 xset (ylabel.handle_value (), "clipping", "off");
11598
62b7ea59a6ff fixing color mismatch between axis and axis label
Konstantinos Poulios <logari81@googlemail.com>
parents: 11586
diff changeset
4917 xset (ylabel.handle_value (), "color", get_ycolor ());
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4918 xset (ylabel.handle_value (), "autopos_tag", "ylabel");
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
4919 update_ylabel_position ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4920 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4921
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4922 void
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4923 axes::properties::set_zlabel (const octave_value& v)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4924 {
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4925 set_text_child (zlabel, "zlabel", v);
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4926 xset (zlabel.handle_value (), "positionmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4927 xset (zlabel.handle_value (), "rotationmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4928 xset (zlabel.handle_value (), "horizontalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4929 xset (zlabel.handle_value (), "verticalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4930 xset (zlabel.handle_value (), "clipping", "off");
11598
62b7ea59a6ff fixing color mismatch between axis and axis label
Konstantinos Poulios <logari81@googlemail.com>
parents: 11586
diff changeset
4931 xset (zlabel.handle_value (), "color", get_zcolor ());
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4932 xset (zlabel.handle_value (), "autopos_tag", "zlabel");
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
4933 update_zlabel_position ();
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4934 }
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4935
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4936 void
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4937 axes::properties::set_title (const octave_value& v)
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4938 {
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
4939 set_text_child (title, "title", v);
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4940 xset (title.handle_value (), "positionmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4941 xset (title.handle_value (), "horizontalalignment", "center");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4942 xset (title.handle_value (), "horizontalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4943 xset (title.handle_value (), "verticalalignment", "bottom");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4944 xset (title.handle_value (), "verticalalignmentmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4945 xset (title.handle_value (), "clipping", "off");
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
4946 xset (title.handle_value (), "autopos_tag", "title");
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
4947 update_title_position ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4948 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4949
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
4950 void
6844
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
4951 axes::properties::set_defaults (base_graphics_object& obj,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
4952 const std::string& mode)
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4953 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4954 box = "on";
6962
9ac23c7f1c37 [project @ 2007-10-05 20:52:19 by jwe]
jwe
parents: 6945
diff changeset
4955 colororder = default_colororder ();
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4956 // Note: dataspectratio will be set through update_aspectratios
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4957 dataaspectratiomode = "auto";
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4958 layer = "bottom";
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4959
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4960 Matrix tlim (1, 2, 0.0);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4961 tlim(1) = 1;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4962 xlim = tlim;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4963 ylim = tlim;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4964 zlim = tlim;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
4965
6807
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
4966 Matrix cl (1, 2, 0);
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
4967 cl(1) = 1;
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
4968 clim = cl;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
4969
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4970 alim = tlim;
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4971
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4972 xlimmode = "auto";
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4973 ylimmode = "auto";
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4974 zlimmode = "auto";
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
4975 climmode = "auto";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4976 alimmode = "auto";
8208
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
4977
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4978 xgrid = "off";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4979 ygrid = "off";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4980 zgrid = "off";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4981 xminorgrid = "off";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4982 yminorgrid = "off";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4983 zminorgrid = "off";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4984 xtick = Matrix ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4985 ytick = Matrix ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4986 ztick = Matrix ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4987 xtickmode = "auto";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4988 ytickmode = "auto";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4989 ztickmode = "auto";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4990 xminortick = "off";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4991 yminortick = "off";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4992 zminortick = "off";
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4993 xticklabel = "";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4994 yticklabel = "";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4995 zticklabel = "";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4996 xticklabelmode = "auto";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4997 yticklabelmode = "auto";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
4998 zticklabelmode = "auto";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
4999
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5000 interpreter = "none";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5001
14798
fce841c941a5 The color property for new plot axes should take on the default value.
Ben Abbott <bpabbott@mac.com>
parents: 14691
diff changeset
5002 color = color_values ("white");
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
5003 xcolor = color_values ("black");
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
5004 ycolor = color_values ("black");
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
5005 zcolor = color_values ("black");
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
5006 xscale = "linear";
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
5007 yscale = "linear";
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
5008 zscale = "linear";
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5009 xdir = "normal";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5010 ydir = "normal";
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5011 zdir = "normal";
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
5012 yaxislocation = "left";
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
5013 xaxislocation = "bottom";
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5014
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5015 Matrix tview (1, 2, 0.0);
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5016 tview(1) = 90;
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5017 view = tview;
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5018
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5019 __hold_all__ = "off";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5020 nextplot = "replace";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5021
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5022 ambientlightcolor = Matrix (1, 3, 1.0);
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5023
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5024 // Note: camera properties (not mode) will be set in update_transform
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5025 camerapositionmode = "auto";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5026 cameratargetmode = "auto";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5027 cameraupvectormode = "auto";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5028 cameraviewanglemode = "auto";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5029
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5030 drawmode = "normal";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5031
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5032 fontangle = "normal";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5033 fontname = OCTAVE_DEFAULT_FONTNAME;
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5034 fontsize = 10;
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5035 fontunits = "points";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5036 fontweight = "normal";
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5037
7820
cb4838d70ab2 Fix default value for axes gridlinestyle and minorgridlinestyle.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7680
diff changeset
5038 gridlinestyle = ":";
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5039 linestyleorder = "-";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5040 linewidth = 0.5;
7820
cb4838d70ab2 Fix default value for axes gridlinestyle and minorgridlinestyle.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7680
diff changeset
5041 minorgridlinestyle = ":";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5042
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5043 // Note: plotboxaspectratio will be set through update_aspectratios
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5044 plotboxaspectratiomode = "auto";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5045 projection = "orthographic";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5046
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5047 tickdir = "in";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5048 tickdirmode = "auto";
8740
cb0ea772a4af Initialize axes ticklength property.
Ben Abbott <bpabbott@mac.com>
parents: 8687
diff changeset
5049 ticklength = default_axes_ticklength ();
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5050
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5051 tightinset = Matrix (1, 4, 0.0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5052
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5053 sx = "linear";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5054 sy = "linear";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5055 sz = "linear";
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5056
6765
e6b528a3a2a9 [project @ 2007-06-28 15:25:43 by jwe]
jwe
parents: 6761
diff changeset
5057 visible = "on";
17081
86067af51d5e Truly reset axes so that all properties are set to default.
Rik <rik@octave.org>
parents: 17024
diff changeset
5058
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5059 // Replace/Reset preserves Position and Units properties
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5060 if (mode != "replace" && mode != "reset")
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5061 {
16832
e528beb2d774 Initialization and updating of tightinset and looseinset properties.
Ben Abbott <bpabbott@mac.com>
parents: 16831
diff changeset
5062 outerposition = default_axes_outerposition ();
7860
67edbcb19665 rudimentry (i.e. no font metrics) sync of axes.position and axes.outerposition
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7859
diff changeset
5063 position = default_axes_position ();
8228
53dbbd331498 Preserve font and position properties when axes are replace in the handle code
David Bateman <dbateman@free.fr>
parents: 8209
diff changeset
5064 activepositionproperty = "outerposition";
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
5065 }
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
5066
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5067 if (mode != "reset")
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5068 {
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5069 delete_children (true);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5070
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5071 xlabel = gh_manager::make_graphics_handle ("text", __myhandle__,
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5072 false, false);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5073 ylabel = gh_manager::make_graphics_handle ("text", __myhandle__,
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5074 false, false);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5075 zlabel = gh_manager::make_graphics_handle ("text", __myhandle__,
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5076 false, false);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5077 title = gh_manager::make_graphics_handle ("text", __myhandle__,
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5078 false, false);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5079 adopt (xlabel.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5080 adopt (ylabel.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5081 adopt (zlabel.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5082 adopt (title.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5083 }
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5084 else
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5085 {
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5086 graphics_object go = gh_manager::get_object (xlabel.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5087 go.reset_default_properties ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5088 go = gh_manager::get_object (ylabel.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5089 go.reset_default_properties ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5090 go = gh_manager::get_object (zlabel.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5091 go.reset_default_properties ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5092 go = gh_manager::get_object (title.handle_value ());
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5093 go.reset_default_properties ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
5094 }
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5095
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5096 xset (xlabel.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5097 xset (ylabel.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5098 xset (zlabel.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5099 xset (title.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5100
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5101 xset (xlabel.handle_value (), "horizontalalignment", "center");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5102 xset (xlabel.handle_value (), "horizontalalignmentmode", "auto");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5103 xset (ylabel.handle_value (), "horizontalalignment", "center");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5104 xset (ylabel.handle_value (), "horizontalalignmentmode", "auto");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5105 xset (zlabel.handle_value (), "horizontalalignment", "right");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5106 xset (zlabel.handle_value (), "horizontalalignmentmode", "auto");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5107 xset (title.handle_value (), "horizontalalignment", "center");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5108 xset (title.handle_value (), "horizontalalignmentmode", "auto");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5109
16204
92f8bfae9b13 Set default xlabel "verticalalignment" to "top".
Rik <rik@octave.org>
parents: 16201
diff changeset
5110 xset (xlabel.handle_value (), "verticalalignment", "top");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5111 xset (xlabel.handle_value (), "verticalalignmentmode", "auto");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5112 xset (ylabel.handle_value (), "verticalalignment", "bottom");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5113 xset (ylabel.handle_value (), "verticalalignmentmode", "auto");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5114 xset (title.handle_value (), "verticalalignment", "bottom");
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5115 xset (title.handle_value (), "verticalalignmentmode", "auto");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5116
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5117 xset (ylabel.handle_value (), "rotation", 90.0);
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5118 xset (ylabel.handle_value (), "rotationmode", "auto");
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
5119
9403
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
5120 xset (zlabel.handle_value (), "visible", "off");
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
5121
9403
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
5122 xset (xlabel.handle_value (), "clipping", "off");
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
5123 xset (ylabel.handle_value (), "clipping", "off");
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
5124 xset (zlabel.handle_value (), "clipping", "off");
4af6e29449c1 [mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9396
diff changeset
5125 xset (title.handle_value (), "clipping", "off");
8636
ee70d438a5b4 [mq]: grfx
John W. Eaton <jwe@octave.org>
parents: 8599
diff changeset
5126
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5127 xset (xlabel.handle_value (), "autopos_tag", "xlabel");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5128 xset (ylabel.handle_value (), "autopos_tag", "ylabel");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5129 xset (zlabel.handle_value (), "autopos_tag", "zlabel");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5130 xset (title.handle_value (), "autopos_tag", "title");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5131
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5132 update_transform ();
17011
350cad34b0f8 Simplify syncing axes "position", "outerposition", and "looseinset".
Ben Abbott <bpabbott@mac.com>
parents: 16971
diff changeset
5133 sync_positions ();
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5134 override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5135 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5136
8208
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5137 void
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5138 axes::properties::delete_text_child (handle_property& hp)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents: 6845
diff changeset
5139 {
8208
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5140 graphics_handle h = hp.handle_value ();
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5141
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5142 if (h.ok ())
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5143 {
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5144 graphics_object go = gh_manager::get_object (h);
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5145
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5146 if (go.valid_object ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5147 gh_manager::free (h);
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5148
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5149 base_properties::remove_child (h);
8208
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5150 }
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5151
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5152 // FIXME: is it necessary to check whether the axes object is
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5153 // being deleted now? I think this function is only called when an
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5154 // individual child object is delete and not when the parent axes
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5155 // object is deleted.
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5156
8208
f6ca8ff51818 [mq]: graphics-backend
John W. Eaton <jwe@octave.org>
parents: 8196
diff changeset
5157 if (! is_beingdeleted ())
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5158 {
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
5159 hp = gh_manager::make_graphics_handle ("text", __myhandle__,
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
5160 false, false);
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5161
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5162 xset (hp.handle_value (), "handlevisibility", "off");
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5163
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5164 adopt (hp.handle_value ());
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5165 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5166 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
5167
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5168 void
6844
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
5169 axes::properties::remove_child (const graphics_handle& h)
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5170 {
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5171 if (xlabel.handle_value ().ok () && h == xlabel.handle_value ())
19081
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5172 {
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5173 delete_text_child (xlabel);
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5174 update_xlabel_position ();
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5175 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
5176 else if (ylabel.handle_value ().ok () && h == ylabel.handle_value ())
19081
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5177 {
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5178 delete_text_child (ylabel);
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5179 update_ylabel_position ();
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5180 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
5181 else if (zlabel.handle_value ().ok () && h == zlabel.handle_value ())
19081
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5182 {
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5183 delete_text_child (zlabel);
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5184 update_zlabel_position ();
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5185 }
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8234
diff changeset
5186 else if (title.handle_value ().ok () && h == title.handle_value ())
19081
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5187 {
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5188 delete_text_child (title);
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5189 update_title_position ();
284f7fa221e9 Fix new x/y/zlabel position after deletion (bug #42652)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18970
diff changeset
5190 }
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5191 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5192 base_properties::remove_child (h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6684
diff changeset
5193 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
5194
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5195 inline Matrix
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5196 xform_matrix (void)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5197 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5198 Matrix m (4, 4, 0.0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5199 for (int i = 0; i < 4; i++)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5200 m(i,i) = 1;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5201 return m;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5202 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5203
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5204 inline ColumnVector
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5205 xform_vector (void)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5206 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5207 ColumnVector v (4, 0.0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5208 v(3) = 1;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5209 return v;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5210 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5211
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5212 inline ColumnVector
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5213 xform_vector (double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5214 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5215 ColumnVector v (4, 1.0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5216 v(0) = x; v(1) = y; v(2) = z;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5217 return v;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5218 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5219
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5220 inline ColumnVector
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5221 transform (const Matrix& m, double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5222 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5223 return (m * xform_vector (x, y, z));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5224 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5225
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5226 inline Matrix
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5227 xform_scale (double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5228 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5229 Matrix m (4, 4, 0.0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5230 m(0,0) = x; m(1,1) = y; m(2,2) = z; m(3,3) = 1;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5231 return m;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5232 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5233
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5234 inline Matrix
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5235 xform_translate (double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5236 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5237 Matrix m = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5238 m(0,3) = x; m(1,3) = y; m(2,3) = z; m(3,3) = 1;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5239 return m;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5240 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5241
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5242 inline void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5243 scale (Matrix& m, double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5244 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5245 m = m * xform_scale (x, y, z);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5246 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5247
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5248 inline void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5249 translate (Matrix& m, double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5250 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5251 m = m * xform_translate (x, y, z);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5252 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5253
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5254 inline void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5255 xform (ColumnVector& v, const Matrix& m)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5256 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5257 v = m*v;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5258 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5259
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5260 inline void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5261 scale (ColumnVector& v, double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5262 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5263 v(0) *= x;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5264 v(1) *= y;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5265 v(2) *= z;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5266 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5267
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5268 inline void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5269 translate (ColumnVector& v, double x, double y, double z)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5270 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5271 v(0) += x;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5272 v(1) += y;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5273 v(2) += z;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5274 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5275
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5276 inline void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5277 normalize (ColumnVector& v)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5278 {
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5279 double fact = 1.0 / sqrt (v(0)*v(0)+v(1)*v(1)+v(2)*v(2));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5280 scale (v, fact, fact, fact);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5281 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5282
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5283 inline double
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5284 dot (const ColumnVector& v1, const ColumnVector& v2)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5285 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5286 return (v1(0)*v2(0)+v1(1)*v2(1)+v1(2)*v2(2));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5287 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5288
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5289 inline double
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5290 norm (const ColumnVector& v)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5291 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5292 return sqrt (dot (v, v));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5293 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5294
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5295 inline ColumnVector
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5296 cross (const ColumnVector& v1, const ColumnVector& v2)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5297 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5298 ColumnVector r = xform_vector ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5299 r(0) = v1(1)*v2(2)-v1(2)*v2(1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5300 r(1) = v1(2)*v2(0)-v1(0)*v2(2);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5301 r(2) = v1(0)*v2(1)-v1(1)*v2(0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5302 return r;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5303 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5304
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5305 inline Matrix
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5306 unit_cube (void)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5307 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5308 static double data[32] =
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5309 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5310 0,0,0,1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5311 1,0,0,1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5312 0,1,0,1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5313 0,0,1,1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5314 1,1,0,1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5315 1,0,1,1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5316 0,1,1,1,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5317 1,1,1,1
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5318 };
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5319 Matrix m (4, 8);
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5320 memcpy (m.fortran_vec (), data, sizeof (double)*32);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5321 return m;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5322 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5323
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5324 inline ColumnVector
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5325 cam2xform (const Array<double>& m)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5326 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5327 ColumnVector retval (4, 1.0);
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5328 memcpy (retval.fortran_vec (), m.fortran_vec (), sizeof (double)*3);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5329 return retval;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5330 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5331
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5332 inline RowVector
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5333 xform2cam (const ColumnVector& v)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5334 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5335 return v.extract_n (0, 3).transpose ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5336 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5337
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5338 void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5339 axes::properties::update_camera (void)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5340 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5341 double xd = (xdir_is ("normal") ? 1 : -1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5342 double yd = (ydir_is ("normal") ? 1 : -1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5343 double zd = (zdir_is ("normal") ? 1 : -1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5344
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5345 Matrix xlimits = sx.scale (get_xlim ().matrix_value ());
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5346 Matrix ylimits = sy.scale (get_ylim ().matrix_value ());
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5347 Matrix zlimits = sz.scale (get_zlim ().matrix_value ());
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5348
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5349 double xo = xlimits(xd > 0 ? 0 : 1);
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5350 double yo = ylimits(yd > 0 ? 0 : 1);
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5351 double zo = zlimits(zd > 0 ? 0 : 1);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
5352
17564
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
5353 Matrix pb = get_plotboxaspectratio ().matrix_value ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
5354
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5355 bool autocam = (camerapositionmode_is ("auto")
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5356 && cameratargetmode_is ("auto")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5357 && cameraupvectormode_is ("auto")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5358 && cameraviewanglemode_is ("auto"));
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5359 bool dowarp = (autocam && dataaspectratiomode_is ("auto")
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5360 && plotboxaspectratiomode_is ("auto"));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5361
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5362 ColumnVector c_eye (xform_vector ());
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5363 ColumnVector c_center (xform_vector ());
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5364 ColumnVector c_upv (xform_vector ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
5365
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5366 if (cameratargetmode_is ("auto"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5367 {
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5368 c_center(0) = (xlimits(0)+xlimits(1))/2;
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5369 c_center(1) = (ylimits(0)+ylimits(1))/2;
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5370 c_center(2) = (zlimits(0)+zlimits(1))/2;
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5371
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5372 cameratarget = xform2cam (c_center);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5373 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5374 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5375 c_center = cam2xform (get_cameratarget ().matrix_value ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
5376
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5377 if (camerapositionmode_is ("auto"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5378 {
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5379 Matrix tview = get_view ().matrix_value ();
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5380 double az = tview(0);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5381 double el = tview(1);
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5382 double d = 5 * sqrt (pb(0)*pb(0)+pb(1)*pb(1)+pb(2)*pb(2));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5383
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5384 if (el == 90 || el == -90)
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5385 c_eye(2) = d*signum (el);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5386 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5387 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5388 az *= M_PI/180.0;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5389 el *= M_PI/180.0;
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5390 c_eye(0) = d * cos (el) * sin (az);
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5391 c_eye(1) = -d* cos (el) * cos (az);
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5392 c_eye(2) = d * sin (el);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5393 }
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5394 c_eye(0) = c_eye(0)*(xlimits(1)-xlimits(0))/(xd*pb(0))+c_center(0);
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5395 c_eye(1) = c_eye(1)*(ylimits(1)-ylimits(0))/(yd*pb(1))+c_center(1);
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5396 c_eye(2) = c_eye(2)*(zlimits(1)-zlimits(0))/(zd*pb(2))+c_center(2);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5397
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5398 cameraposition = xform2cam (c_eye);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5399 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5400 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5401 c_eye = cam2xform (get_cameraposition ().matrix_value ());
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5402
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5403 if (cameraupvectormode_is ("auto"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5404 {
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5405 Matrix tview = get_view ().matrix_value ();
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5406 double az = tview(0);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5407 double el = tview(1);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5408
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5409 if (el == 90 || el == -90)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5410 {
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
5411 c_upv(0) =
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5412 -signum (el) *sin (az*M_PI/180.0)*(xlimits(1)-xlimits(0))/pb(0);
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
5413 c_upv(1) =
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5414 signum (el) * cos (az*M_PI/180.0)*(ylimits(1)-ylimits(0))/pb(1);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5415 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5416 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5417 c_upv(2) = 1;
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5418
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5419 cameraupvector = xform2cam (c_upv);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5420 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5421 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5422 c_upv = cam2xform (get_cameraupvector ().matrix_value ());
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5423
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5424 Matrix x_view = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5425 Matrix x_projection = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5426 Matrix x_viewport = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5427 Matrix x_normrender = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5428 Matrix x_pre = xform_matrix ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
5429
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5430 x_render = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5431 x_render_inv = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5432
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5433 scale (x_pre, pb(0), pb(1), pb(2));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5434 translate (x_pre, -0.5, -0.5, -0.5);
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5435 scale (x_pre, xd/(xlimits(1)-xlimits(0)), yd/(ylimits(1)-ylimits(0)),
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5436 zd/(zlimits(1)-zlimits(0)));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5437 translate (x_pre, -xo, -yo, -zo);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5438
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5439 xform (c_eye, x_pre);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5440 xform (c_center, x_pre);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
5441 scale (c_upv, pb(0)/(xlimits(1)-xlimits(0)), pb(1)/(ylimits(1)-ylimits(0)),
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5442 pb(2)/(zlimits(1)-zlimits(0)));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5443 translate (c_center, -c_eye(0), -c_eye(1), -c_eye(2));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5444
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5445 ColumnVector F (c_center), f (F), UP (c_upv);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5446 normalize (f);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5447 normalize (UP);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5448
7440
4e3b073e910e [project @ 2008-02-02 18:23:50 by jwe]
jwe
parents: 7435
diff changeset
5449 if (std::abs (dot (f, UP)) > 1e-15)
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5450 {
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5451 double fa = 1 / sqrt(1-f(2)*f(2));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5452 scale (UP, fa, fa, fa);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5453 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5454
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5455 ColumnVector s = cross (f, UP);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5456 ColumnVector u = cross (s, f);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5457
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5458 scale (x_view, 1, 1, -1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5459 Matrix l = xform_matrix ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5460 l(0,0) = s(0); l(0,1) = s(1); l(0,2) = s(2);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5461 l(1,0) = u(0); l(1,1) = u(1); l(1,2) = u(2);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5462 l(2,0) = -f(0); l(2,1) = -f(1); l(2,2) = -f(2);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5463 x_view = x_view * l;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5464 translate (x_view, -c_eye(0), -c_eye(1), -c_eye(2));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5465 scale (x_view, pb(0), pb(1), pb(2));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5466 translate (x_view, -0.5, -0.5, -0.5);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5467
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5468 Matrix x_cube = x_view * unit_cube ();
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5469 ColumnVector cmin = x_cube.row_min ();
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5470 ColumnVector cmax = x_cube.row_max ();
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5471 double xM = cmax(0)-cmin(0);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5472 double yM = cmax(1)-cmin(1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5473
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
5474 Matrix bb = get_boundingbox (true);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5475
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5476 double v_angle;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5477
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5478 if (cameraviewanglemode_is ("auto"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5479 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5480 double af;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5481
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5482 // FIXME: was this really needed? When compared to Matlab, it
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5483 // does not seem to be required. Need investigation with concrete
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
5484 // graphics toolkit to see results visually.
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5485 if (false && dowarp)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5486 af = 1.0 / (xM > yM ? xM : yM);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5487 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5488 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5489 if ((bb(2)/bb(3)) > (xM/yM))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5490 af = 1.0 / yM;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5491 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5492 af = 1.0 / xM;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5493 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5494 v_angle = 2 * (180.0 / M_PI) * atan (1 / (2 * af * norm (F)));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5495
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5496 cameraviewangle = v_angle;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5497 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5498 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5499 v_angle = get_cameraviewangle ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5500
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5501 double pf = 1 / (2 * tan ((v_angle / 2) * M_PI / 180.0) * norm (F));
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5502 scale (x_projection, pf, pf, 1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5503
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5504 if (dowarp)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5505 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5506 xM *= pf;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5507 yM *= pf;
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
5508 translate (x_viewport, bb(0)+bb(2)/2, bb(1)+bb(3)/2, 0);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5509 scale (x_viewport, bb(2)/xM, -bb(3)/yM, 1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5510 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5511 else
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5512 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5513 double pix = 1;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5514 if (autocam)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5515 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5516 if ((bb(2)/bb(3)) > (xM/yM))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5517 pix = bb(3);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5518 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5519 pix = bb(2);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5520 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5521 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5522 pix = (bb(2) < bb(3) ? bb(2) : bb(3));
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
5523 translate (x_viewport, bb(0)+bb(2)/2, bb(1)+bb(3)/2, 0);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5524 scale (x_viewport, pix, -pix, 1);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5525 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5526
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5527 x_normrender = x_viewport * x_projection * x_view;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5528
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5529 x_cube = x_normrender * unit_cube ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5530 cmin = x_cube.row_min ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5531 cmax = x_cube.row_max ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5532 x_zlim.resize (1, 2);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5533 x_zlim(0) = cmin(2);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5534 x_zlim(1) = cmax(2);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5535
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5536 x_render = x_normrender;
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5537 scale (x_render, xd/(xlimits(1)-xlimits(0)), yd/(ylimits(1)-ylimits(0)),
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5538 zd/(zlimits(1)-zlimits(0)));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5539 translate (x_render, -xo, -yo, -zo);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5540
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5541 x_viewtransform = x_view;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5542 x_projectiontransform = x_projection;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5543 x_viewporttransform = x_viewport;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5544 x_normrendertransform = x_normrender;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5545 x_rendertransform = x_render;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5546
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5547 x_render_inv = x_render.inverse ();
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5548
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5549 // Note: these matrices are a slight modified version of the regular
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5550 // matrices, more suited for OpenGL rendering (x_gl_mat1 => light
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5551 // => x_gl_mat2)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5552 x_gl_mat1 = x_view;
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
5553 scale (x_gl_mat1, xd/(xlimits(1)-xlimits(0)), yd/(ylimits(1)-ylimits(0)),
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
5554 zd/(zlimits(1)-zlimits(0)));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5555 translate (x_gl_mat1, -xo, -yo, -zo);
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5556 x_gl_mat2 = x_viewport * x_projection;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5557 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
5558
12347
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5559 static bool updating_axes_layout = false;
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5560
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5561 void
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5562 axes::properties::update_axes_layout (void)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5563 {
12347
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5564 if (updating_axes_layout)
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5565 return;
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5566
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5567 graphics_xform xform = get_transform ();
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5568
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5569 double xd = (xdir_is ("normal") ? 1 : -1);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5570 double yd = (ydir_is ("normal") ? 1 : -1);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5571 double zd = (zdir_is ("normal") ? 1 : -1);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5572
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5573 const Matrix xlims = xform.xscale (get_xlim ().matrix_value ());
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5574 const Matrix ylims = xform.yscale (get_ylim ().matrix_value ());
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5575 const Matrix zlims = xform.zscale (get_zlim ().matrix_value ());
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5576
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5577 double x_min, x_max, y_min, y_max, z_min, z_max;
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5578 x_min = xlims(0), x_max = xlims(1);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5579 y_min = ylims(0), y_max = ylims(1);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5580 z_min = zlims(0), z_max = zlims(1);
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5581
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5582 ColumnVector p1, p2, dir (3);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5583
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5584 xstate = ystate = zstate = AXE_ANY_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5585
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5586 p1 = xform.transform (x_min, (y_min+y_max)/2, (z_min+z_max)/2, false);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5587 p2 = xform.transform (x_max, (y_min+y_max)/2, (z_min+z_max)/2, false);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5588 dir(0) = xround (p2(0)-p1(0));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5589 dir(1) = xround (p2(1)-p1(1));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5590 dir(2) = (p2(2)-p1(2));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5591 if (dir(0) == 0 && dir(1) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5592 xstate = AXE_DEPTH_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5593 else if (dir(2) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5594 {
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5595 if (dir(0) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5596 xstate = AXE_VERT_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5597 else if (dir(1) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5598 xstate = AXE_HORZ_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5599 }
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5600
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5601 if (dir(2) == 0)
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5602 {
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5603 if (dir(1) == 0)
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5604 xPlane = (dir(0) > 0 ? x_max : x_min);
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5605 else
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5606 xPlane = (dir(1) < 0 ? x_max : x_min);
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5607 }
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5608 else
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5609 xPlane = (dir(2) < 0 ? x_min : x_max);
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5610
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5611 xPlaneN = (xPlane == x_min ? x_max : x_min);
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5612 fx = (x_max-x_min) / sqrt (dir(0)*dir(0)+dir(1)*dir(1));
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5613
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5614 p1 = xform.transform ((x_min+x_max)/2, y_min, (z_min+z_max)/2, false);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5615 p2 = xform.transform ((x_min+x_max)/2, y_max, (z_min+z_max)/2, false);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5616 dir(0) = xround (p2(0)-p1(0));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5617 dir(1) = xround (p2(1)-p1(1));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5618 dir(2) = (p2(2)-p1(2));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5619 if (dir(0) == 0 && dir(1) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5620 ystate = AXE_DEPTH_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5621 else if (dir(2) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5622 {
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5623 if (dir(0) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5624 ystate = AXE_VERT_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5625 else if (dir(1) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5626 ystate = AXE_HORZ_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5627 }
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5628
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5629 if (dir(2) == 0)
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5630 {
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5631 if (dir(1) == 0)
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5632 yPlane = (dir(0) > 0 ? y_max : y_min);
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5633 else
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5634 yPlane = (dir(1) < 0 ? y_max : y_min);
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5635 }
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5636 else
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5637 yPlane = (dir(2) < 0 ? y_min : y_max);
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5638
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5639 yPlaneN = (yPlane == y_min ? y_max : y_min);
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5640 fy = (y_max-y_min) / sqrt (dir(0)*dir(0)+dir(1)*dir(1));
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5641
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5642 p1 = xform.transform ((x_min+x_max)/2, (y_min+y_max)/2, z_min, false);
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5643 p2 = xform.transform ((x_min+x_max)/2, (y_min+y_max)/2, z_max, false);
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5644 dir(0) = xround (p2(0)-p1(0));
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5645 dir(1) = xround (p2(1)-p1(1));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5646 dir(2) = (p2(2)-p1(2));
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5647 if (dir(0) == 0 && dir(1) == 0)
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5648 zstate = AXE_DEPTH_DIR;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5649 else if (dir(2) == 0)
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5650 {
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5651 if (dir(0) == 0)
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5652 zstate = AXE_VERT_DIR;
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5653 else if (dir(1) == 0)
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5654 zstate = AXE_HORZ_DIR;
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5655 }
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5656
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5657 if (dir(2) == 0)
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5658 {
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5659 if (dir(1) == 0)
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5660 zPlane = (dir(0) > 0 ? z_min : z_max);
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5661 else
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5662 zPlane = (dir(1) < 0 ? z_min : z_max);
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5663 }
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5664 else
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5665 zPlane = (dir(2) < 0 ? z_min : z_max);
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
5666
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5667 zPlaneN = (zPlane == z_min ? z_max : z_min);
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5668 fz = (z_max-z_min) / sqrt (dir(0)*dir(0)+dir(1)*dir(1));
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5669
12347
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5670 unwind_protect frame;
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5671 frame.protect_var (updating_axes_layout);
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5672 updating_axes_layout = true;
f6763ab98609 Prevent race condition in update_axes_layout
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
5673
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5674 xySym = (xd*yd*(xPlane-xPlaneN)*(yPlane-yPlaneN) > 0);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5675 zSign = (zd*(zPlane-zPlaneN) <= 0);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5676 xyzSym = zSign ? xySym : !xySym;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5677 xpTick = (zSign ? xPlaneN : xPlane);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5678 ypTick = (zSign ? yPlaneN : yPlane);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5679 zpTick = (zSign ? zPlane : zPlaneN);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5680 xpTickN = (zSign ? xPlane : xPlaneN);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5681 ypTickN = (zSign ? yPlane : yPlaneN);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5682 zpTickN = (zSign ? zPlaneN : zPlane);
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5683
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5684 /* 2D mode */
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5685 x2Dtop = false;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5686 y2Dright = false;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5687 layer2Dtop = false;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5688 if (xstate == AXE_HORZ_DIR && ystate == AXE_VERT_DIR)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5689 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5690 if (xaxislocation_is ("top"))
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5691 {
18832
f684f7075aee Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents: 18822
diff changeset
5692 std::swap (yPlane, yPlaneN);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5693 x2Dtop = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5694 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5695 ypTick = yPlaneN;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5696 ypTickN = yPlane;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5697 if (yaxislocation_is ("right"))
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5698 {
18832
f684f7075aee Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents: 18822
diff changeset
5699 std::swap (xPlane, xPlaneN);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5700 y2Dright = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5701 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5702 xpTick = xPlaneN;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5703 xpTickN = xPlane;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5704 if (layer_is ("top"))
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5705 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5706 zpTick = zPlaneN;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5707 layer2Dtop = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5708 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5709 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5710 zpTick = zPlane;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5711 }
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5712
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5713 Matrix viewmat = get_view ().matrix_value ();
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5714 nearhoriz = std::abs (viewmat(1)) <= 5;
18822
e42843ceff48 Fix axes bounding box not obeying 'layer' property.
Rik <rik@octave.org>
parents: 18801
diff changeset
5715 is2D = viewmat(1) == 90;
13830
462b5f556346 avoid uninitialized variable warning from valgrind
John W. Eaton <jwe@octave.org>
parents: 13816
diff changeset
5716
14391
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5717 update_ticklength ();
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5718 }
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5719
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5720 void
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5721 axes::properties::update_ticklength (void)
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5722 {
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5723 bool mode2d = (((xstate > AXE_DEPTH_DIR ? 1 : 0) +
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5724 (ystate > AXE_DEPTH_DIR ? 1 : 0) +
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5725 (zstate > AXE_DEPTH_DIR ? 1 : 0)) == 2);
14395
e41e538e9d03 Fix TickDir handling for 2D and 3D plots (bug #35575).
Rik <octave@nomad.inbox5.com>
parents: 14391
diff changeset
5726
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5727 if (tickdirmode_is ("auto"))
14395
e41e538e9d03 Fix TickDir handling for 2D and 3D plots (bug #35575).
Rik <octave@nomad.inbox5.com>
parents: 14391
diff changeset
5728 tickdir.set (mode2d ? "in" : "out", true);
e41e538e9d03 Fix TickDir handling for 2D and 3D plots (bug #35575).
Rik <octave@nomad.inbox5.com>
parents: 14391
diff changeset
5729
e41e538e9d03 Fix TickDir handling for 2D and 3D plots (bug #35575).
Rik <octave@nomad.inbox5.com>
parents: 14391
diff changeset
5730 double ticksign = (tickdir_is ("in") ? -1 : 1);
14391
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5731
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5732 Matrix bbox = get_boundingbox (true);
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5733 Matrix ticklen = get_ticklength ().matrix_value ();
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5734 ticklen(0) = ticklen(0) * std::max (bbox(2), bbox(3));
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5735 ticklen(1) = ticklen(1) * std::max (bbox(2), bbox(3));
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5736
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5737 xticklen = ticksign * (mode2d ? ticklen(0) : ticklen(1));
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5738 yticklen = ticksign * (mode2d ? ticklen(0) : ticklen(1));
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5739 zticklen = ticksign * (mode2d ? ticklen(0) : ticklen(1));
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5740
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5741 xtickoffset = (mode2d ? std::max (0., xticklen) : std::abs (xticklen)) + 5;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5742 ytickoffset = (mode2d ? std::max (0., yticklen) : std::abs (yticklen)) + 5;
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
5743 ztickoffset = (mode2d ? std::max (0., zticklen) : std::abs (zticklen)) + 5;
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5744
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5745 update_xlabel_position ();
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5746 update_ylabel_position ();
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5747 update_zlabel_position ();
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5748 update_title_position ();
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5749 }
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5750
14391
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5751 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
5752 ## FIXME: A demo can't be called in a C++ file. This should be made a test
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
5753 ## or moved to a .m file where it can be called.
14391
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5754 %!demo
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
5755 %! clf;
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
5756 %! subplot (2,1,1);
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5757 %! plot (rand (3));
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5758 %! xlabel xlabel;
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5759 %! ylabel ylabel;
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5760 %! title title;
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
5761 %! subplot (2,1,2);
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5762 %! plot (rand (3));
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5763 %! set (gca, "ticklength", get (gca, "ticklength") * 2, "tickdir", "out");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5764 %! xlabel xlabel;
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5765 %! ylabel ylabel;
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
5766 %! title title;
14391
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5767 */
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14367
diff changeset
5768
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5769 static bool updating_xlabel_position = false;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5770
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5771 void
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5772 axes::properties::update_xlabel_position (void)
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5773 {
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5774 if (updating_xlabel_position)
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5775 return;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5776
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5777 text::properties& xlabel_props
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5778 = reinterpret_cast<text::properties&>
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5779 (gh_manager::get_object (get_xlabel ()).get_properties ());
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5780
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
5781 bool is_empty = xlabel_props.get_string ().is_empty ();
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5782
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5783 unwind_protect frame;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5784 frame.protect_var (updating_xlabel_position);
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5785 updating_xlabel_position = true;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5786
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5787 if (! is_empty)
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5788 {
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5789 if (xlabel_props.horizontalalignmentmode_is ("auto"))
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5790 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5791 xlabel_props.set_horizontalalignment
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5792 (xstate > AXE_DEPTH_DIR
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5793 ? "center" : (xyzSym ? "left" : "right"));
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5794
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5795 xlabel_props.set_horizontalalignmentmode ("auto");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5796 }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5797
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5798 if (xlabel_props.verticalalignmentmode_is ("auto"))
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5799 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5800 xlabel_props.set_verticalalignment
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5801 (xstate == AXE_VERT_DIR || x2Dtop ? "bottom" : "top");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5802
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5803 xlabel_props.set_verticalalignmentmode ("auto");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5804 }
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5805 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5806
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5807 if (xlabel_props.positionmode_is ("auto")
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5808 || xlabel_props.rotationmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5809 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5810 graphics_xform xform = get_transform ();
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5811
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5812 Matrix ext (1, 2, 0.0);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5813 ext = get_ticklabel_extents (get_xtick ().matrix_value (),
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5814 get_xticklabel ().all_strings (),
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5815 get_xlim ().matrix_value ());
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5816
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5817 double wmax = ext(0);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5818 double hmax = ext(1);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5819 double angle = 0;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5820 ColumnVector p =
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5821 graphics_xform::xform_vector ((xpTickN+xpTick)/2, ypTick, zpTick);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5822
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5823 bool tick_along_z = nearhoriz || xisinf (fy);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5824 if (tick_along_z)
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5825 p(2) += (signum (zpTick-zpTickN)*fz*xtickoffset);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5826 else
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5827 p(1) += (signum (ypTick-ypTickN)*fy*xtickoffset);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5828
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5829 p = xform.transform (p(0), p(1), p(2), false);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5830
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5831 switch (xstate)
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5832 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5833 case AXE_ANY_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5834 p(0) += (xyzSym ? wmax : -wmax);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5835 p(1) += hmax;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5836 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5837
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5838 case AXE_VERT_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5839 p(0) -= wmax;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5840 angle = 90;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5841 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5842
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5843 case AXE_HORZ_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5844 p(1) += (x2Dtop ? -hmax : hmax);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5845 break;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5846 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5847
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5848 if (xlabel_props.positionmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5849 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5850 p = xform.untransform (p(0), p(1), p(2), true);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5851 xlabel_props.set_position (p.extract_n (0, 3).transpose ());
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5852 xlabel_props.set_positionmode ("auto");
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5853 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5854
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5855 if (! is_empty && xlabel_props.rotationmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5856 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5857 xlabel_props.set_rotation (angle);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5858 xlabel_props.set_rotationmode ("auto");
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5859 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5860 }
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5861 }
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5862
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5863 static bool updating_ylabel_position = false;
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5864
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5865 void
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5866 axes::properties::update_ylabel_position (void)
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5867 {
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5868 if (updating_ylabel_position)
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5869 return;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5870
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5871 text::properties& ylabel_props
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5872 = reinterpret_cast<text::properties&>
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5873 (gh_manager::get_object (get_ylabel ()).get_properties ());
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5874
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
5875 bool is_empty = ylabel_props.get_string ().is_empty ();
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5876
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5877 unwind_protect frame;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5878 frame.protect_var (updating_ylabel_position);
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5879 updating_ylabel_position = true;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5880
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5881 if (! is_empty)
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5882 {
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5883 if (ylabel_props.horizontalalignmentmode_is ("auto"))
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5884 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5885 ylabel_props.set_horizontalalignment
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5886 (ystate > AXE_DEPTH_DIR
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5887 ? "center" : (!xyzSym ? "left" : "right"));
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5888
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5889 ylabel_props.set_horizontalalignmentmode ("auto");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5890 }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5891
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5892 if (ylabel_props.verticalalignmentmode_is ("auto"))
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5893 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5894 ylabel_props.set_verticalalignment
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5895 (ystate == AXE_VERT_DIR && !y2Dright ? "bottom" : "top");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5896
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5897 ylabel_props.set_verticalalignmentmode ("auto");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5898 }
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5899 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5900
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5901 if (ylabel_props.positionmode_is ("auto")
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5902 || ylabel_props.rotationmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5903 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5904 graphics_xform xform = get_transform ();
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5905
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5906 Matrix ext (1, 2, 0.0);
16201
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5907
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5908 // The underlying get_extents() from FreeType produces mismatched values.
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5909 // x-extent accurately measures the width of the glyphs.
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5910 // y-extent instead measures from baseline-to-baseline.
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5911 // Pad x-extent (+4) so that it approximately matches y-extent.
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5912 // This keeps ylabels about the same distance from y-axis as
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5913 // xlabels are from x-axis.
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5914 // ALWAYS use an even number for padding or horizontal alignment
2338a92e9782 Fix spacing between ylabel and y-axis (bug #38461)
Rik <rik@octave.org>
parents: 15760
diff changeset
5915 // will be off.
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5916 ext = get_ticklabel_extents (get_ytick ().matrix_value (),
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5917 get_yticklabel ().all_strings (),
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5918 get_ylim ().matrix_value ());
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5919
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5920 double wmax = ext(0)+4;
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5921 double hmax = ext(1);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
5922 double angle = 0;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5923 ColumnVector p =
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5924 graphics_xform::xform_vector (xpTick, (ypTickN+ypTick)/2, zpTick);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5925
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5926 bool tick_along_z = nearhoriz || xisinf (fx);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5927 if (tick_along_z)
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5928 p(2) += (signum (zpTick-zpTickN)*fz*ytickoffset);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5929 else
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
5930 p(0) += (signum (xpTick-xpTickN)*fx*ytickoffset);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5931
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5932 p = xform.transform (p(0), p(1), p(2), false);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5933
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5934 switch (ystate)
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5935 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5936 case AXE_ANY_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5937 p(0) += (!xyzSym ? wmax : -wmax);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5938 p(1) += hmax;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5939 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5940
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5941 case AXE_VERT_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5942 p(0) += (y2Dright ? wmax : -wmax);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5943 angle = 90;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5944 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5945
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5946 case AXE_HORZ_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5947 p(1) += hmax;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5948 break;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5949 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5950
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5951 if (ylabel_props.positionmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5952 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5953 p = xform.untransform (p(0), p(1), p(2), true);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5954 ylabel_props.set_position (p.extract_n (0, 3).transpose ());
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5955 ylabel_props.set_positionmode ("auto");
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5956 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5957
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5958 if (! is_empty && ylabel_props.rotationmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5959 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5960 ylabel_props.set_rotation (angle);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5961 ylabel_props.set_rotationmode ("auto");
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5962 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5963 }
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5964 }
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5965
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5966 static bool updating_zlabel_position = false;
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5967
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5968 void
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5969 axes::properties::update_zlabel_position (void)
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5970 {
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5971 if (updating_zlabel_position)
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5972 return;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5973
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5974 text::properties& zlabel_props
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5975 = reinterpret_cast<text::properties&>
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5976 (gh_manager::get_object (get_zlabel ()).get_properties ());
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
5977
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5978 bool camAuto = cameraupvectormode_is ("auto");
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
5979 bool is_empty = zlabel_props.get_string ().is_empty ();
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5980
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5981 unwind_protect frame;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5982 frame.protect_var (updating_zlabel_position);
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
5983 updating_zlabel_position = true;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5984
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5985 if (! is_empty)
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
5986 {
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5987 if (zlabel_props.horizontalalignmentmode_is ("auto"))
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5988 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5989 zlabel_props.set_horizontalalignment
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5990 ((zstate > AXE_DEPTH_DIR || camAuto) ? "center" : "right");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5991
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5992 zlabel_props.set_horizontalalignmentmode ("auto");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5993 }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5994
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5995 if (zlabel_props.verticalalignmentmode_is ("auto"))
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5996 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5997 zlabel_props.set_verticalalignment
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5998 (zstate == AXE_VERT_DIR
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
5999 ? "bottom" : ((zSign || camAuto) ? "bottom" : "top"));
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6000
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6001 zlabel_props.set_verticalalignmentmode ("auto");
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6002 }
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6003 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6004
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6005 if (zlabel_props.positionmode_is ("auto")
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6006 || zlabel_props.rotationmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6007 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6008 graphics_xform xform = get_transform ();
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6009
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6010 Matrix ext (1, 2, 0.0);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6011 ext = get_ticklabel_extents (get_ztick ().matrix_value (),
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6012 get_zticklabel ().all_strings (),
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6013 get_zlim ().matrix_value ());
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6014
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
6015 double wmax = ext(0);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
6016 double hmax = ext(1);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
6017 double angle = 0;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6018 ColumnVector p;
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6019
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6020 if (xySym)
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6021 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6022 p = graphics_xform::xform_vector (xPlaneN, yPlane,
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6023 (zpTickN+zpTick)/2);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6024 if (xisinf (fy))
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
6025 p(0) += (signum (xPlaneN-xPlane)*fx*ztickoffset);
12348
d1e48a4a9a0b Untabify and improve indentation
Konstantinos Poulios <logari81@googlemail.com>
parents: 12347
diff changeset
6026 else
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
6027 p(1) += (signum (yPlane-yPlaneN)*fy*ztickoffset);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6028 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6029 else
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6030 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6031 p = graphics_xform::xform_vector (xPlane, yPlaneN,
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6032 (zpTickN+zpTick)/2);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6033 if (xisinf (fx))
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
6034 p(1) += (signum (yPlaneN-yPlane)*fy*ztickoffset);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6035 else
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
6036 p(0) += (signum (xPlane-xPlaneN)*fx*ztickoffset);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6037 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6038
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6039 p = xform.transform (p(0), p(1), p(2), false);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6040
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6041 switch (zstate)
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6042 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6043 case AXE_ANY_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6044 if (camAuto)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6045 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6046 p(0) -= wmax;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6047 angle = 90;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6048 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6049
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6050 // FIXME: what's the correct offset?
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6051 //
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6052 // p[0] += (!xySym ? wmax : -wmax);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6053 // p[1] += (zSign ? hmax : -hmax);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6054
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6055 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6056
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6057 case AXE_VERT_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6058 p(0) -= wmax;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6059 angle = 90;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6060 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6061
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6062 case AXE_HORZ_DIR:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6063 p(1) += hmax;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6064 break;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6065 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6066
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6067 if (zlabel_props.positionmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6068 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6069 p = xform.untransform (p(0), p(1), p(2), true);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6070 zlabel_props.set_position (p.extract_n (0, 3).transpose ());
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6071 zlabel_props.set_positionmode ("auto");
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6072 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6073
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6074 if (! is_empty && zlabel_props.rotationmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6075 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6076 zlabel_props.set_rotation (angle);
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6077 zlabel_props.set_rotationmode ("auto");
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6078 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6079 }
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6080 }
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6081
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6082 static bool updating_title_position = false;
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
6083
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
6084 void
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
6085 axes::properties::update_title_position (void)
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
6086 {
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6087 if (updating_title_position)
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6088 return;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6089
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6090 text::properties& title_props
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6091 = reinterpret_cast<text::properties&>
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6092 (gh_manager::get_object (get_title ()).get_properties ());
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
6093
12910
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6094 unwind_protect frame;
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6095 frame.protect_var (updating_title_position);
e77284b6dac6 avoid possible infinite recursion in autopositioning of labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12777
diff changeset
6096 updating_title_position = true;
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6097
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6098 if (title_props.positionmode_is ("auto"))
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6099 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6100 graphics_xform xform = get_transform ();
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6101
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6102 // FIXME: bbox should be stored in axes::properties
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6103 Matrix bbox = get_extent (false);
13910
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6104
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6105 ColumnVector p =
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6106 graphics_xform::xform_vector (bbox(0)+bbox(2)/2,
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6107 bbox(1)-10,
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6108 (x_zlim(0)+x_zlim(1))/2);
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6109
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6110 if (x2Dtop)
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6111 {
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6112 Matrix ext (1, 2, 0.0);
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6113 ext = get_ticklabel_extents (get_xtick ().matrix_value (),
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6114 get_xticklabel ().all_strings (),
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6115 get_xlim ().matrix_value ());
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6116 p(1) -= ext(1);
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6117 }
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6118
2af665333b86 title positioning taking xaxislocation into account (bug #33418)
Konstantinos Poulios <logari81@googlemail.com>
parents: 13908
diff changeset
6119 p = xform.untransform (p(0), p(1), p(2), true);
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6120
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
6121 title_props.set_position (p.extract_n (0, 3).transpose ());
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6122 title_props.set_positionmode ("auto");
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6123 }
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6124 }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6125
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6126 void
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6127 axes::properties::update_autopos (const std::string& elem_type)
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6128 {
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6129 if (elem_type == "xlabel")
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6130 update_xlabel_position ();
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6131 else if (elem_type == "ylabel")
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6132 update_ylabel_position ();
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6133 else if (elem_type == "zlabel")
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6134 update_zlabel_position ();
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6135 else if (elem_type == "title")
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
6136 update_title_position ();
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6137 else if (elem_type == "sync")
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6138 sync_positions ();
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
6139 }
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12221
diff changeset
6140
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6141 static void
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6142 normalized_aspectratios (Matrix& aspectratios, const Matrix& scalefactors,
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6143 double xlength, double ylength, double zlength)
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6144 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6145 double xval = xlength/scalefactors(0);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6146 double yval = ylength/scalefactors(1);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6147 double zval = zlength/scalefactors(2);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6148
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6149 double minval = xmin (xmin (xval, yval), zval);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6150
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6151 aspectratios(0) = xval/minval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6152 aspectratios(1) = yval/minval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6153 aspectratios(2) = zval/minval;
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6154 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6155
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6156 static void
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6157 max_axes_scale (double& s, Matrix& limits, const Matrix& kids,
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6158 double pbfactor, double dafactor, char limit_type, bool tight)
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6159 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6160 if (tight)
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6161 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6162 double minval = octave_Inf;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6163 double maxval = -octave_Inf;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6164 double min_pos = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6165 double max_neg = -octave_Inf;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6166 get_children_limits (minval, maxval, min_pos, max_neg, kids, limit_type);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6167 if (xfinite (minval) && xfinite (maxval))
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6168 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6169 limits(0) = minval;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6170 limits(1) = maxval;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6171 s = xmax(s, (maxval - minval) / (pbfactor * dafactor));
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6172 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6173 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6174 else
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6175 s = xmax(s, (limits(1) - limits(0)) / (pbfactor * dafactor));
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6176 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6177
18892
868dcab453bd Distinguish axes when checking for recursion in axes limits updates (bug #40005).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18877
diff changeset
6178 static std::set<double> updating_aspectratios;
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6179
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6180 void
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6181 axes::properties::update_aspectratios (void)
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6182 {
20073
726df008104d maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20071
diff changeset
6183 if (updating_aspectratios.find (get___myhandle__ ().value ())
726df008104d maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20071
diff changeset
6184 != updating_aspectratios.end ())
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6185 return;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6186
7526
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
6187 Matrix xlimits = get_xlim ().matrix_value ();
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
6188 Matrix ylimits = get_ylim ().matrix_value ();
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
6189 Matrix zlimits = get_zlim ().matrix_value ();
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
6190
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
6191 double dx = (xlimits(1)-xlimits(0));
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
6192 double dy = (ylimits(1)-ylimits(0));
52d58b0463ed graphics.cc, graphics.h.in: avoid some GCC warnings
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
6193 double dz = (zlimits(1)-zlimits(0));
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6194
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6195 Matrix da = get_dataaspectratio ().matrix_value ();
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6196 Matrix pba = get_plotboxaspectratio ().matrix_value ();
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6197
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6198 if (dataaspectratiomode_is ("auto"))
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6199 {
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6200 if (plotboxaspectratiomode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6201 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6202 pba = Matrix (1, 3, 1.0);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6203 plotboxaspectratio.set (pba, false);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6204 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6205
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6206 normalized_aspectratios (da, pba, dx, dy, dz);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6207 dataaspectratio.set (da, false);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6208 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6209 else if (plotboxaspectratiomode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6210 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6211 normalized_aspectratios (pba, da, dx, dy, dz);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6212 plotboxaspectratio.set (pba, false);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6213 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6214 else
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6215 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6216 double s = -octave_Inf;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6217 bool modified_limits = false;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6218 Matrix kids;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6219
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6220 if (xlimmode_is ("auto") && ylimmode_is ("auto") && zlimmode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6221 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6222 modified_limits = true;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6223 kids = get_children ();
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6224 max_axes_scale (s, xlimits, kids, pba(0), da(0), 'x', true);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6225 max_axes_scale (s, ylimits, kids, pba(1), da(1), 'y', true);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6226 max_axes_scale (s, zlimits, kids, pba(2), da(2), 'z', true);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6227 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6228 else if (xlimmode_is ("auto") && ylimmode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6229 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6230 modified_limits = true;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6231 max_axes_scale (s, zlimits, kids, pba(2), da(2), 'z', false);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6232 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6233 else if (ylimmode_is ("auto") && zlimmode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6234 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6235 modified_limits = true;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6236 max_axes_scale (s, xlimits, kids, pba(0), da(0), 'x', false);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6237 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6238 else if (zlimmode_is ("auto") && xlimmode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6239 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6240 modified_limits = true;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6241 max_axes_scale (s, ylimits, kids, pba(1), da(1), 'y', false);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6242 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6243
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6244 if (modified_limits)
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6245 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6246
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6247 unwind_protect frame;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6248 frame.protect_var (updating_aspectratios);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6249
18892
868dcab453bd Distinguish axes when checking for recursion in axes limits updates (bug #40005).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18877
diff changeset
6250 updating_aspectratios.insert (get___myhandle__ ().value ());
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6251
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6252 dx = pba(0) *da(0);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6253 dy = pba(1) *da(1);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6254 dz = pba(2) *da(2);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6255 if (xisinf (s))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6256 s = 1 / xmin (xmin (dx, dy), dz);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6257
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6258 if (xlimmode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6259 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6260 dx = s * dx;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6261 xlimits(0) = 0.5 * (xlimits(0) + xlimits(1) - dx);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6262 xlimits(1) = xlimits(0) + dx;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6263 set_xlim (xlimits);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6264 set_xlimmode ("auto");
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6265 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6266
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6267 if (ylimmode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6268 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6269 dy = s * dy;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6270 ylimits(0) = 0.5 * (ylimits(0) + ylimits(1) - dy);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6271 ylimits(1) = ylimits(0) + dy;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6272 set_ylim (ylimits);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6273 set_ylimmode ("auto");
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6274 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6275
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6276 if (zlimmode_is ("auto"))
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6277 {
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6278 dz = s * dz;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6279 zlimits(0) = 0.5 * (zlimits(0) + zlimits(1) - dz);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6280 zlimits(1) = zlimits(0) + dz;
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6281 set_zlim (zlimits);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6282 set_zlimmode ("auto");
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6283 }
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6284 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6285 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6286 {
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6287 normalized_aspectratios (pba, da, dx, dy, dz);
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
6288 plotboxaspectratio.set (pba, false);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6289 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6290 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6291 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6292
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6293 void
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6294 axes::properties::update_font (void)
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6295 {
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6296 #ifdef HAVE_FREETYPE
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6297 #ifdef HAVE_FONTCONFIG
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6298 text_renderer.set_font (get ("fontname").string_value (),
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6299 get ("fontweight").string_value (),
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6300 get ("fontangle").string_value (),
19239
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
6301 get ("fontsize_points").double_value ());
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6302 #endif
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6303 #endif
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6304 }
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
6305
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
6306 // The INTERNAL flag defines whether position or outerposition is used.
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
6307
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6308 Matrix
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6309 axes::properties::get_boundingbox (bool internal,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6310 const Matrix& parent_pix_size) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6311 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6312 Matrix pos = internal ? get_position ().matrix_value ()
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6313 : get_outerposition ().matrix_value ();
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6314 Matrix parent_size (parent_pix_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6315
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6316 if (parent_size.numel () == 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6317 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6318 graphics_object obj = gh_manager::get_object (get_parent ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6319
17607
07a4597fcbac graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17564
diff changeset
6320 if (obj.valid_object ())
07a4597fcbac graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17564
diff changeset
6321 parent_size =
07a4597fcbac graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17564
diff changeset
6322 obj.get_properties ().get_boundingbox (true).extract_n (0, 2, 1, 2);
07a4597fcbac graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17564
diff changeset
6323 else
07a4597fcbac graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17564
diff changeset
6324 parent_size = default_figure_position ();
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6325 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6326
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6327 pos = convert_position (pos, get_units (), "pixels", parent_size);
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
6328
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6329 pos(0)--;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6330 pos(1)--;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6331 pos(1) = parent_size(1) - pos(1) - pos(3);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6332
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6333 return pos;
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6334 }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
6335
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6336 Matrix
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6337 axes::properties::get_extent (bool with_text, bool only_text_height) const
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6338 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6339 graphics_xform xform = get_transform ();
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6340
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6341 Matrix ext (1, 4, 0.0);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6342 ext(0) = octave_Inf;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6343 ext(1) = octave_Inf;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6344 ext(2) = -octave_Inf;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6345 ext(3) = -octave_Inf;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6346 for (int i = 0; i <= 1; i++)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6347 for (int j = 0; j <= 1; j++)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6348 for (int k = 0; k <= 1; k++)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6349 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6350 ColumnVector p = xform.transform (i ? xPlaneN : xPlane,
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6351 j ? yPlaneN : yPlane,
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6352 k ? zPlaneN : zPlane, false);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6353 ext(0) = std::min (ext(0), p(0));
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6354 ext(1) = std::min (ext(1), p(1));
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6355 ext(2) = std::max (ext(2), p(0));
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6356 ext(3) = std::max (ext(3), p(1));
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6357 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6358
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6359 if (with_text)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6360 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6361 for (int i = 0; i < 4; i++)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6362 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6363 graphics_handle text_handle;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6364 if (i == 0)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6365 text_handle = get_title ();
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6366 else if (i == 1)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6367 text_handle = get_xlabel ();
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6368 else if (i == 2)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6369 text_handle = get_ylabel ();
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6370 else if (i == 3)
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6371 text_handle = get_zlabel ();
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6372
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6373 text::properties& text_props
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6374 = reinterpret_cast<text::properties&>
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6375 (gh_manager::get_object (text_handle).get_properties ());
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6376
14483
6a736395ff7d fix wrong axes extents for text elements with custom units (bug #35856)
Konstantinos Poulios <logari81@googlemail.com>
parents: 14457
diff changeset
6377 Matrix text_pos = text_props.get_data_position ();
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6378 text_pos = xform.transform (text_pos(0), text_pos(1), text_pos(2));
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
6379 if (text_props.get_string ().is_empty ())
12502
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6380 {
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6381 ext(0) = std::min (ext(0), text_pos(0));
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6382 ext(1) = std::min (ext(1), text_pos(1));
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6383 ext(2) = std::max (ext(2), text_pos(0));
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6384 ext(3) = std::max (ext(3), text_pos(1));
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6385 }
13640f7f40bb improve calculation of axes tightinset for empty axes labels/title
Konstantinos Poulios <logari81@googlemail.com>
parents: 12496
diff changeset
6386 else
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6387 {
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6388 Matrix text_ext = text_props.get_extent_matrix ();
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6389
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6390 bool ignore_horizontal = false;
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6391 bool ignore_vertical = false;
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6392 if (only_text_height)
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6393 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
6394 double text_rotation = text_props.get_rotation ();
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6395 if (text_rotation == 0. || text_rotation == 180.)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6396 ignore_horizontal = true;
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6397 else if (text_rotation == 90. || text_rotation == 270.)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6398 ignore_vertical = true;
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6399 }
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6400
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6401 if (! ignore_horizontal)
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6402 {
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6403 ext(0) = std::min (ext(0), text_pos(0)+text_ext(0));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6404 ext(2) = std::max (ext(2),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6405 text_pos(0)+text_ext(0)+text_ext(2));
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6406 }
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6407
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6408 if (! ignore_vertical)
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6409 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6410 ext(1) = std::min (ext(1),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6411 text_pos(1)-text_ext(1)-text_ext(3));
12496
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6412 ext(3) = std::max (ext(3), text_pos(1)-text_ext(1));
245b5efb07c2 fix axes position synchronization for long text objects
Konstantinos Poulios <logari81@gmail.com>
parents: 12483
diff changeset
6413 }
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6414 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6415 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6416 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6417
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6418 ext(2) = ext(2)-ext(0);
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6419 ext(3) = ext(3)-ext(1);
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
6420
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6421 return ext;
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6422 }
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
6423
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6424 static octave_value
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6425 convert_ticklabel_string (const octave_value& val)
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6426 {
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6427 octave_value retval = val;
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6428
16841
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6429 if (val.is_cellstr ())
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6430 {
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6431 // Always return a column vector for Matlab Compatibility
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6432 if (val.columns () > 1)
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6433 retval = val.reshape (dim_vector (val.numel (), 1));
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6434 }
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6435 else
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6436 {
16854
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6437 string_vector sv;
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6438 if (val.is_numeric_type ())
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6439 {
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6440 NDArray data = val.array_value ();
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6441 std::ostringstream oss;
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6442 oss.precision (5);
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6443 for (octave_idx_type i = 0; i < val.numel (); i++)
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6444 {
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6445 oss.str ("");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6446 oss << data(i);
16854
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6447 sv.append (oss.str ());
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6448 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6449 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6450 else if (val.is_string () && val.rows () == 1)
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6451 {
16854
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6452 std::string valstr = val.string_value ();
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6453 std::istringstream iss (valstr);
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6454 std::string tmpstr;
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6455
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6456 // Split string with delimiter '|'
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6457 while (std::getline (iss, tmpstr, '|'))
16854
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6458 sv.append (tmpstr);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6459
16854
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6460 // If string ends with '|' Matlab appends a null string
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6461 if (*valstr.rbegin () == '|')
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6462 sv.append (std::string (""));
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6463 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6464 else
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6465 return retval;
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6466
16854
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6467 charMatrix chmat (sv, ' ');
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6468
563f8f0a7e29 Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
Rik <rik@octave.org>
parents: 16841
diff changeset
6469 retval = octave_value (chmat);
16841
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6470 }
2ce1ddead134 Return a cellstr column vector for ticklabels (bug #34906).
Rik <rik@octave.org>
parents: 16840
diff changeset
6471
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6472 return retval;
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6473 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6474
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6475 void
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6476 axes::properties::set_xticklabel (const octave_value& v)
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6477 {
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6478 if (!error_state)
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6479 {
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6480 if (xticklabel.set (convert_ticklabel_string (v), false))
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6481 {
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6482 set_xticklabelmode ("manual");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6483 xticklabel.run_listeners (POSTSET);
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6484 mark_modified ();
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6485 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6486 else
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6487 set_xticklabelmode ("manual");
19860
a9516bc4c55c Update axes "tightinset" when "x/y/ztick" have changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19851
diff changeset
6488
a9516bc4c55c Update axes "tightinset" when "x/y/ztick" have changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19851
diff changeset
6489 sync_positions ();
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6490 }
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6491 }
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6492
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6493 void
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6494 axes::properties::set_yticklabel (const octave_value& v)
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6495 {
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6496 if (!error_state)
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6497 {
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6498 if (yticklabel.set (convert_ticklabel_string (v), false))
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6499 {
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6500 set_yticklabelmode ("manual");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6501 yticklabel.run_listeners (POSTSET);
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6502 mark_modified ();
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6503 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6504 else
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6505 set_yticklabelmode ("manual");
19860
a9516bc4c55c Update axes "tightinset" when "x/y/ztick" have changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19851
diff changeset
6506
a9516bc4c55c Update axes "tightinset" when "x/y/ztick" have changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19851
diff changeset
6507 sync_positions ();
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6508 }
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6509 }
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6510
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6511 void
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6512 axes::properties::set_zticklabel (const octave_value& v)
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6513 {
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6514 if (!error_state)
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6515 {
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6516 if (zticklabel.set (convert_ticklabel_string (v), false))
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6517 {
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6518 set_zticklabelmode ("manual");
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6519 zticklabel.run_listeners (POSTSET);
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6520 mark_modified ();
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6521 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6522 else
16840
969233a27bce maint: Use octave coding conventions for changeset fd5a4b7f59f7.
Rik <rik@octave.org>
parents: 16832
diff changeset
6523 set_zticklabelmode ("manual");
19860
a9516bc4c55c Update axes "tightinset" when "x/y/ztick" have changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19851
diff changeset
6524
a9516bc4c55c Update axes "tightinset" when "x/y/ztick" have changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19851
diff changeset
6525 sync_positions ();
16750
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6526 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6527 }
fd5a4b7f59f7 add format option to ticklabel (bug #34906)
Stefan Mahr <dac922@gmx.de>
parents: 16312
diff changeset
6528
17382
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6529 // Almost identical to convert_ticklabel_string but it only accepts
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6530 // cellstr or string, not numeric input.
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6531 static octave_value
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6532 convert_linestyleorder_string (const octave_value& val)
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6533 {
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6534 octave_value retval = val;
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6535
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6536 if (val.is_cellstr ())
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6537 {
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6538 // Always return a column vector for Matlab Compatibility
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6539 if (val.columns () > 1)
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6540 retval = val.reshape (dim_vector (val.numel (), 1));
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6541 }
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6542 else
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6543 {
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6544 string_vector sv;
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6545 if (val.is_string () && val.rows () == 1)
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6546 {
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6547 std::string valstr = val.string_value ();
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6548 std::istringstream iss (valstr);
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6549 std::string tmpstr;
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6550
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6551 // Split string with delimiter '|'
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6552 while (std::getline (iss, tmpstr, '|'))
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6553 sv.append (tmpstr);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6554
17382
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6555 // If string ends with '|' Matlab appends a null string
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6556 if (*valstr.rbegin () == '|')
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6557 sv.append (std::string (""));
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6558 }
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6559 else
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6560 return retval;
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6561
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6562 charMatrix chmat (sv, ' ');
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6563
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6564 retval = octave_value (chmat);
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6565 }
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6566
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6567 return retval;
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6568 }
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6569
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6570 void
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6571 axes::properties::set_linestyleorder (const octave_value& v)
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6572 {
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6573 if (!error_state)
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6574 {
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6575 linestyleorder.set (convert_linestyleorder_string (v), false);
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6576 }
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6577 }
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17319
diff changeset
6578
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6579 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6580 axes::properties::set_units (const octave_value& v)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6581 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6582 if (! error_state)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6583 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6584 caseless_str old_units = get_units ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6585 if (units.set (v, true))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6586 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6587 update_units (old_units);
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6588 mark_modified ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6589 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6590 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6591 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6592
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6593 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6594 axes::properties::update_units (const caseless_str& old_units)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6595 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6596 graphics_object obj = gh_manager::get_object (get_parent ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6597 Matrix parent_bb
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6598 = obj.get_properties ().get_boundingbox (true).extract_n (0, 2, 1, 2);
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6599 caseless_str new_units = get_units ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6600 position.set (octave_value (convert_position (get_position ().matrix_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6601 old_units, new_units,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6602 parent_bb)),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6603 false);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6604 outerposition.set (octave_value (convert_position (get_outerposition ().matrix_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6605 old_units, new_units,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6606 parent_bb)),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6607 false);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6608 tightinset.set (octave_value (convert_position (get_tightinset ().matrix_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6609 old_units, new_units,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6610 parent_bb)),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6611 false);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6612 looseinset.set (octave_value (convert_position (get_looseinset ().matrix_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6613 old_units, new_units,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6614 parent_bb)),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6615 false);
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6616 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6617
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6618 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6619 axes::properties::set_fontunits (const octave_value& v)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6620 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6621 if (! error_state)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6622 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6623 caseless_str old_fontunits = get_fontunits ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6624 if (fontunits.set (v, true))
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6625 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6626 update_fontunits (old_fontunits);
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6627 mark_modified ();
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6628 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6629 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6630 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6631
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6632 void
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6633 axes::properties::update_fontunits (const caseless_str& old_units)
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6634 {
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6635 caseless_str new_units = get_fontunits ();
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6636 double parent_height = get_boundingbox (true).elem (3);
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6637 double fsz = get_fontsize ();
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6638
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6639 fsz = convert_font_size (fsz, old_units, new_units, parent_height);
10991
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6640
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6641 set_fontsize (octave_value (fsz));
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6642 }
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
6643
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6644 double
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6645 axes::properties::get_fontsize_points (double box_pix_height) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6646 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6647 double fs = get_fontsize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6648 double parent_height = box_pix_height;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6649
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6650 if (fontunits_is ("normalized") && parent_height <= 0)
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
6651 parent_height = get_boundingbox (true).elem (3);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6652
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6653 return convert_font_size (fs, get_fontunits (), "points", parent_height);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6654 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
6655
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6656 ColumnVector
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6657 graphics_xform::xform_vector (double x, double y, double z)
7869
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6658 {
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6659 return ::xform_vector (x, y, z);
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6660 }
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6661
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6662 Matrix
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6663 graphics_xform::xform_eye (void)
7869
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6664 {
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6665 return ::xform_matrix ();
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6666 }
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6667
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6668 ColumnVector
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6669 graphics_xform::transform (double x, double y, double z,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6670 bool use_scale) const
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6671 {
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6672 if (use_scale)
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6673 {
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6674 x = sx.scale (x);
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6675 y = sy.scale (y);
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6676 z = sz.scale (z);
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6677 }
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6678
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6679 return ::transform (xform, x, y, z);
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6680 }
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6681
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6682 ColumnVector
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6683 graphics_xform::untransform (double x, double y, double z,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6684 bool use_scale) const
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6685 {
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6686 ColumnVector v = ::transform (xform_inv, x, y, z);
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6687
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6688 if (use_scale)
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6689 {
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6690 v(0) = sx.unscale (v(0));
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6691 v(1) = sy.unscale (v(1));
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6692 v(2) = sz.unscale (v(2));
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6693 }
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6694
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6695 return v;
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6696 }
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
6697
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6698 octave_value
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
6699 axes::get_default (const caseless_str& name) const
6836
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6700 {
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6701 octave_value retval = default_properties.lookup (name);
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6702
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6703 if (retval.is_undefined ())
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6704 {
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6705 graphics_handle parent = get_parent ();
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6706 graphics_object parent_obj = gh_manager::get_object (parent);
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6707
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6708 retval = parent_obj.get_default (name);
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6709 }
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6710
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6711 return retval;
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6712 }
ea6ae3af82d1 [project @ 2007-08-27 19:50:22 by jwe]
jwe
parents: 6829
diff changeset
6713
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6714 // FIXME: remove.
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6715 // FIXME: maybe this should go into array_property class?
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6716 /*
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6717 static void
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6718 check_limit_vals (double& min_val, double& max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6719 double& min_pos, double& max_neg,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6720 const array_property& data)
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6721 {
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6722 double val = data.min_val ();
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6723 if (xfinite (val) && val < min_val)
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6724 min_val = val;
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6725 val = data.max_val ();
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6726 if (xfinite (val) && val > max_val)
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6727 max_val = val;
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6728 val = data.min_pos ();
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6729 if (xfinite (val) && val > 0 && val < min_pos)
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6730 min_pos = val;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6731 val = data.max_neg ();
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6732 if (xfinite (val) && val < 0 && val > max_neg)
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6733 max_neg = val;
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6734 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6735 */
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6736
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6737 static void
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6738 check_limit_vals (double& min_val, double& max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6739 double& min_pos, double& max_neg,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6740 const octave_value& data)
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6741 {
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6742 if (data.is_matrix_type ())
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6743 {
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6744 Matrix m = data.matrix_value ();
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6745
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6746 if (! error_state && m.numel () == 4)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6747 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6748 double val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6749
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6750 val = m(0);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6751 if (xfinite (val) && val < min_val)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6752 min_val = val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6753
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6754 val = m(1);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6755 if (xfinite (val) && val > max_val)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6756 max_val = val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6757
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6758 val = m(2);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6759 if (xfinite (val) && val > 0 && val < min_pos)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6760 min_pos = val;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6761
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6762 val = m(3);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
6763 if (xfinite (val) && val < 0 && val > max_neg)
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6764 max_neg = val;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6765 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6766 }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
6767 }
7836
4fb2db9c87dd Turn cdata properties into array_property. Add min/max computation to array_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7835
diff changeset
6768
12508
919cadf334f8 Simplify calculation of number of tick labels. Bug #32692.
Marco Caliari <marco.caliari@univr.it>
parents: 12506
diff changeset
6769 // magform(x) Returns (a, b), where x = a * 10^b, abs (a) >= 1., and b is
919cadf334f8 Simplify calculation of number of tick labels. Bug #32692.
Marco Caliari <marco.caliari@univr.it>
parents: 12506
diff changeset
6770 // integer.
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6771
7869
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6772 static void
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6773 magform (double x, double& a, int& b)
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6774 {
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6775 if (x == 0)
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6776 {
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6777 a = 0;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6778 b = 0;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6779 }
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6780 else
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6781 {
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
6782 b = static_cast<int> (gnulib::floor (std::log10 (std::abs (x))));
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
6783 a = x / std::pow (10.0, b);
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6784 }
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6785 }
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6786
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6787 // A translation from Tom Holoryd's python code at
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6788 // http://kurage.nimh.nih.gov/tomh/tics.py
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6789 // FIXME: add log ticks
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6790
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6791 double
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6792 axes::properties::calc_tick_sep (double lo, double hi)
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6793 {
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6794 int ticint = 5;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6795
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6796 // Reference: Lewart, C. R., "Algorithms SCALE1, SCALE2, and
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6797 // SCALE3 for Determination of Scales on Computer Generated
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6798 // Plots", Communications of the ACM, 10 (1973), 639-640.
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6799 // Also cited as ACM Algorithm 463.
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6800
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6801 double a;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6802 int b, x;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6803
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6804 magform ((hi-lo)/ticint, a, b);
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6805
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6806 static const double sqrt_2 = sqrt (2.0);
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6807 static const double sqrt_10 = sqrt (10.0);
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6808 static const double sqrt_50 = sqrt (50.0);
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6809
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6810 if (a < sqrt_2)
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6811 x = 1;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6812 else if (a < sqrt_10)
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6813 x = 2;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6814 else if (a < sqrt_50)
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6815 x = 5;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6816 else
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6817 x = 10;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6818
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6819 return x * std::pow (10., b);
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6820
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6821 }
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6822
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6823 // Attempt to make "nice" limits from the actual max and min of the
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6824 // data. For log plots, we will also use the smallest strictly positive
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6825 // value.
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6826
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6827 Matrix
7869
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6828 axes::properties::get_axis_limits (double xmin, double xmax,
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6829 double min_pos, double max_neg,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6830 bool logscale)
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6831 {
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6832 Matrix retval;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6833
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6834 double min_val = xmin;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6835 double max_val = xmax;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6836
13757
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
6837 if (xisinf (min_val) && min_val > 0 && xisinf (max_val) && max_val < 0)
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
6838 {
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
6839 retval = default_lim (logscale);
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
6840 return retval;
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
6841 }
1e81e2e30af3 default limits for logscale plots
John W. Eaton <jwe@octave.org>
parents: 13756
diff changeset
6842 else if (! (xisinf (min_val) || xisinf (max_val)))
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6843 {
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6844 if (logscale)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6845 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6846 if (xisinf (min_pos) && xisinf (max_neg))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6847 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6848 // TODO -- max_neg is needed for "loglog ([0 -Inf])"
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6849 // This is the only place where max_neg is needed.
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6850 // Is there another way?
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6851 retval = default_lim ();
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6852 retval(0) = pow (10., retval(0));
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6853 retval(1) = pow (10., retval(1));
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6854 return retval;
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6855 }
13756
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13736
diff changeset
6856 if ((min_val <= 0 && max_val > 0))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6857 {
14062
5b49cafe0599 Use non-negative, non-positive with hyphens in error messages.
Rik <octave@nomad.inbox5.com>
parents: 14022
diff changeset
6858 warning ("axis: omitting non-positive data in log plot");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6859 min_val = min_pos;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6860 }
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6861 // FIXME: maybe this test should also be relative?
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6862 if (std::abs (min_val - max_val)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6863 < sqrt (std::numeric_limits<double>::epsilon ()))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6864 {
14691
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6865 // Widen range when too small
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6866 if (min_val >= 0)
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6867 {
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6868 min_val *= 0.9;
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6869 max_val *= 1.1;
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6870 }
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6871 else
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6872 {
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6873 min_val *= 1.1;
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6874 max_val *= 0.9;
e3da2a68d709 Fix memory exhausted bug with log plots of small negative constant data (bug #36493)
Rik <octave@nomad.inbox5.com>
parents: 14604
diff changeset
6875 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6876 }
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6877 if (min_val > 0)
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6878 {
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6879 // Log plots with all positive data
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6880 min_val = pow (10, gnulib::floor (log10 (min_val)));
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6881 max_val = pow (10, std::ceil (log10 (max_val)));
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6882 }
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6883 else
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6884 {
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6885 // Log plots with all negative data
13756
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13736
diff changeset
6886 min_val = -pow (10, std::ceil (log10 (-min_val)));
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13736
diff changeset
6887 max_val = -pow (10, gnulib::floor (log10 (-max_val)));
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6888 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6889 }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6890 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6891 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6892 if (min_val == 0 && max_val == 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6893 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6894 min_val = -1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6895 max_val = 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6896 }
17861
870f3e12e163 maint: Use phrase "FIXME:" for problem areas in code.
Rik <rik@octave.org>
parents: 17842
diff changeset
6897 // FIXME: maybe this test should also be relative?
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6898 else if (std::abs (min_val - max_val)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6899 < sqrt (std::numeric_limits<double>::epsilon ()))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6900 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6901 min_val -= 0.1 * std::abs (min_val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6902 max_val += 0.1 * std::abs (max_val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6903 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6904
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6905 double tick_sep = calc_tick_sep (min_val , max_val);
12549
570193964185 graphics.cc: Prevent ticks from being cropped.
Ben Abbott <bpabbott@mac.com>
parents: 12508
diff changeset
6906 double min_tick = gnulib::floor (min_val / tick_sep);
570193964185 graphics.cc: Prevent ticks from being cropped.
Ben Abbott <bpabbott@mac.com>
parents: 12508
diff changeset
6907 double max_tick = std::ceil (max_val / tick_sep);
570193964185 graphics.cc: Prevent ticks from being cropped.
Ben Abbott <bpabbott@mac.com>
parents: 12508
diff changeset
6908 // Prevent round-off from cropping ticks
570193964185 graphics.cc: Prevent ticks from being cropped.
Ben Abbott <bpabbott@mac.com>
parents: 12508
diff changeset
6909 min_val = std::min (min_val, tick_sep * min_tick);
570193964185 graphics.cc: Prevent ticks from being cropped.
Ben Abbott <bpabbott@mac.com>
parents: 12508
diff changeset
6910 max_val = std::max (max_val, tick_sep * max_tick);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6911 }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6912 }
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6913
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6914 retval.resize (1, 2);
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6915
14022
de90542b7afc Return retval(1) before retval(0) to avoid re-sizing call on retval.
Rik <octave@nomad.inbox5.com>
parents: 14021
diff changeset
6916 retval(1) = max_val;
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6917 retval(0) = min_val;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6918
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6919 return retval;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6920 }
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
6921
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
6922 void
7869
e6d5532f760e style fixes
John W. Eaton <jwe@octave.org>
parents: 7868
diff changeset
6923 axes::properties::calc_ticks_and_lims (array_property& lims,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6924 array_property& ticks,
12126
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
6925 array_property& mticks,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6926 bool limmode_is_auto, bool is_logscale)
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
6927 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6928 // FIXME: add log ticks and lims
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
6929
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
6930 if (lims.get ().is_empty ())
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
6931 return;
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
6932
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
6933 double lo = (lims.get ().matrix_value ()) (0);
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
6934 double hi = (lims.get ().matrix_value ()) (1);
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6935 bool is_negative = lo < 0 && hi < 0;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6936 double tmp;
17861
870f3e12e163 maint: Use phrase "FIXME:" for problem areas in code.
Rik <rik@octave.org>
parents: 17842
diff changeset
6937 // FIXME: should this be checked for somewhere else? (i.e. set{x,y,z}lim)
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
6938 if (hi < lo)
18857
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6939 std::swap (hi, lo);
7857
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6940
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6941 if (is_logscale)
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6942 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6943 if (is_negative)
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6944 {
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6945 tmp = hi;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6946 hi = std::log10 (-lo);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6947 lo = std::log10 (-tmp);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6948 }
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6949 else
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6950 {
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6951 hi = std::log10 (hi);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6952 lo = std::log10 (lo);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6953 }
7857
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6954 }
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6955
18857
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6956 double tick_sep;
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
6957
18857
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6958 if (is_logscale)
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6959 {
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6960 if (! (xisinf (hi) || xisinf (lo)))
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6961 tick_sep = 1; // Tick is every order of magnitude (bug #39449)
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6962 else
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6963 tick_sep = 0;
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6964 }
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6965 else
ec55f6870efb Fix incorrect log axis minor ticks when axis range > 8 orders of magnitude (bug #39449).
Rik <rik@octave.org>
parents: 18838
diff changeset
6966 tick_sep = calc_tick_sep (lo , hi);
13106
c7512d0d52e8 src/graphics.cc: Ensure tick separation is in factors of 10 for log plots.
Ben Abbott <bpabbott@mac.com>
parents: 12587
diff changeset
6967
11450
5eb10763069f substitute and use LAPACK_LIBS in mkoctfile script
John W. Eaton <jwe@octave.org>
parents: 11431
diff changeset
6968 int i1 = static_cast<int> (gnulib::floor (lo / tick_sep));
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6969 int i2 = static_cast<int> (std::ceil (hi / tick_sep));
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6970
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6971 if (limmode_is_auto)
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6972 {
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6973 // adjust limits to include min and max tics
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6974 Matrix tmp_lims (1,2);
12549
570193964185 graphics.cc: Prevent ticks from being cropped.
Ben Abbott <bpabbott@mac.com>
parents: 12508
diff changeset
6975 tmp_lims(0) = std::min (tick_sep * i1, lo);
570193964185 graphics.cc: Prevent ticks from being cropped.
Ben Abbott <bpabbott@mac.com>
parents: 12508
diff changeset
6976 tmp_lims(1) = std::max (tick_sep * i2, hi);
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6977
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
6978 if (is_logscale)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6979 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6980 tmp_lims(0) = std::pow (10.,tmp_lims(0));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6981 tmp_lims(1) = std::pow (10.,tmp_lims(1));
10941
97294dd3ccd4 graphics.cc: Fix axes limits underflow to zero for logscale.
Ben Abbott <bpabbott@mac.com>
parents: 10923
diff changeset
6982 if (tmp_lims(0) <= 0)
97294dd3ccd4 graphics.cc: Fix axes limits underflow to zero for logscale.
Ben Abbott <bpabbott@mac.com>
parents: 10923
diff changeset
6983 tmp_lims(0) = std::pow (10., lo);
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6984 if (is_negative)
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6985 {
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6986 tmp = tmp_lims(0);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6987 tmp_lims(0) = -tmp_lims(1);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6988 tmp_lims(1) = -tmp;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
6989 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6990 }
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6991 lims = tmp_lims;
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6992 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
6993
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
6994 Matrix tmp_ticks (1, i2-i1+1);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
6995 for (int i = 0; i <= i2-i1; i++)
7857
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6996 {
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6997 tmp_ticks (i) = tick_sep * (i+i1);
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
6998 if (is_logscale)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
6999 tmp_ticks (i) = std::pow (10., tmp_ticks (i));
7857
09b1a9c88128 added (far from perfect) support for logscale ticks
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7855
diff changeset
7000 }
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7001 if (is_logscale && is_negative)
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7002 {
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7003 Matrix rev_ticks (1, i2-i1+1);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7004 rev_ticks = -tmp_ticks;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7005 for (int i = 0; i <= i2-i1; i++)
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7006 tmp_ticks (i) = rev_ticks (i2-i1-i);
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7007 }
7827
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
7008
3584f37eac69 better tick and limit handling, still missing logscale support
Shai Ayal <shaiay@sourceforge.net>
parents: 7824
diff changeset
7009 ticks = tmp_ticks;
12126
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7010
14321
a9a42d630bd5 use 8 minor tick marks per decade for log scale plots, not 9.
John W. Eaton <jwe@octave.org>
parents: 14312
diff changeset
7011 int n = is_logscale ? 8 : 4;
12157
0b9c1a7e350a fix wrong dimensions of minor ticks vector
Konstantinos Poulios <logari81@googlemail.com>
parents: 12126
diff changeset
7012 Matrix tmp_mticks (1, n * (tmp_ticks.numel () - 1));
12126
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7013
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7014 for (int i = 0; i < tmp_ticks.numel ()-1; i++)
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7015 {
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7016 double d = (tmp_ticks (i+1) - tmp_ticks (i)) / (n+1);
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7017 for (int j = 0; j < n; j++)
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7018 {
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7019 tmp_mticks (n*i+j) = tmp_ticks (i) + d * (j+1);
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7020 }
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7021 }
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11598
diff changeset
7022 mticks = tmp_mticks;
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
7023 }
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
7024
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7025 void
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7026 axes::properties::calc_ticklabels (const array_property& ticks,
13211
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7027 any_property& labels, bool logscale)
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7028 {
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7029 Matrix values = ticks.get ().matrix_value ();
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7030 Cell c (values.dims ());
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7031 std::ostringstream os;
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7032
13211
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7033 if (logscale)
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7034 {
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7035 double significand;
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7036 double exponent;
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7037 double exp_max = 0.;
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7038 double exp_min = 0.;
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7039
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7040 for (int i = 0; i < values.numel (); i++)
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7041 {
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7042 exp_max = std::max (exp_max, std::log10 (values(i)));
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7043 exp_min = std::max (exp_min, std::log10 (values(i)));
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7044 }
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7045
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7046 for (int i = 0; i < values.numel (); i++)
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7047 {
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7048 if (values(i) < 0.)
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7049 exponent = gnulib::floor (std::log10 (-values(i)));
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7050 else
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7051 exponent = gnulib::floor (std::log10 (values(i)));
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7052 significand = values(i) * std::pow (10., -exponent);
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7053 os.str (std::string ());
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7054 os << significand;
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7055 if (exponent < 0.)
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7056 {
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7057 os << "e-";
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7058 exponent = -exponent;
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7059 }
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7060 else
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7061 os << "e+";
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7062 if (exponent < 10. && (exp_max > 9 || exp_min < -9))
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7063 os << "0";
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7064 os << exponent;
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7065 c(i) = os.str ();
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7066 }
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7067 }
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7068 else
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7069 {
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7070 for (int i = 0; i < values.numel (); i++)
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7071 {
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7072 os.str (std::string ());
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7073 os << values(i);
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7074 c(i) = os.str ();
78744376463a src/graphics.cc: Consistent log-scale axis tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 13210
diff changeset
7075 }
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7076 }
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7077
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7078 labels = c;
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7079 }
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9316
diff changeset
7080
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7081 Matrix
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7082 axes::properties::get_ticklabel_extents (const Matrix& ticks,
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7083 const string_vector& ticklabels,
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7084 const Matrix& limits)
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7085 {
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
7086 #ifndef HAVE_FREETYPE
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7087 double fontsize = get ("fontsize").double_value ();
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7088 #endif
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7089
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7090 Matrix ext (1, 2, 0.0);
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
7091 double wmax, hmax;
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
7092 wmax = hmax = 0.;
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7093 int n = std::min (ticklabels.numel (), ticks.numel ());
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7094 for (int i = 0; i < n; i++)
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7095 {
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7096 double val = ticks(i);
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7097 if (limits(0) <= val && val <= limits(1))
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7098 {
16855
359ac80ecb30 Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents: 16854
diff changeset
7099 std::string label (ticklabels(i));
359ac80ecb30 Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents: 16854
diff changeset
7100 label.erase (0, label.find_first_not_of (" "));
359ac80ecb30 Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents: 16854
diff changeset
7101 label = label.substr (0, label.find_last_not_of (" ")+1);
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7102 #ifdef HAVE_FREETYPE
17269
5b088598df1d Add simple TeX parser based on flex/bison.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17260
diff changeset
7103 ext = text_renderer.get_extent (label, 0.0, "none");
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7104 wmax = std::max (wmax, ext(0));
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7105 hmax = std::max (hmax, ext(1));
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7106 #else
16855
359ac80ecb30 Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents: 16854
diff changeset
7107 // FIXME: find a better approximation
359ac80ecb30 Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents: 16854
diff changeset
7108 int len = label.length ();
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7109 wmax = std::max (wmax, 0.5*fontsize*len);
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7110 hmax = fontsize;
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7111 #endif
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7112 }
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7113 }
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7114
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7115 ext(0) = wmax;
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7116 ext(1) = hmax;
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7117 return ext;
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7118 }
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
7119
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7120 void
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7121 get_children_limits (double& min_val, double& max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7122 double& min_pos, double& max_neg,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7123 const Matrix& kids, char limit_type)
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7124 {
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7125 octave_idx_type n = kids.numel ();
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7126
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7127 switch (limit_type)
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7128 {
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7129 case 'x':
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7130 for (octave_idx_type i = 0; i < n; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7131 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7132 graphics_object obj = gh_manager::get_object (kids(i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7133
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7134 if (obj.is_xliminclude ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7135 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7136 octave_value lim = obj.get_xlim ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7137
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7138 check_limit_vals (min_val, max_val, min_pos, max_neg, lim);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7139 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7140 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7141 break;
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7142
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7143 case 'y':
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7144 for (octave_idx_type i = 0; i < n; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7145 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7146 graphics_object obj = gh_manager::get_object (kids(i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7147
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7148 if (obj.is_yliminclude ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7149 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7150 octave_value lim = obj.get_ylim ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7151
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7152 check_limit_vals (min_val, max_val, min_pos, max_neg, lim);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7153 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7154 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7155 break;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7156
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7157 case 'z':
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7158 for (octave_idx_type i = 0; i < n; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7159 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7160 graphics_object obj = gh_manager::get_object (kids(i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7161
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7162 if (obj.is_zliminclude ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7163 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7164 octave_value lim = obj.get_zlim ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7165
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7166 check_limit_vals (min_val, max_val, min_pos, max_neg, lim);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7167 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7168 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7169 break;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7170
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7171 case 'c':
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7172 for (octave_idx_type i = 0; i < n; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7173 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7174 graphics_object obj = gh_manager::get_object (kids(i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7175
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7176 if (obj.is_climinclude ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7177 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7178 octave_value lim = obj.get_clim ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7179
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7180 check_limit_vals (min_val, max_val, min_pos, max_neg, lim);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7181 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7182 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7183 break;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7184
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7185 case 'a':
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7186 for (octave_idx_type i = 0; i < n; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7187 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7188 graphics_object obj = gh_manager::get_object (kids(i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7189
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7190 if (obj.is_aliminclude ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7191 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7192 octave_value lim = obj.get_alim ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7193
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7194 check_limit_vals (min_val, max_val, min_pos, max_neg, lim);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7195 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7196 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7197 break;
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7198
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7199 default:
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7200 break;
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7201 }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7202 }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7203
18892
868dcab453bd Distinguish axes when checking for recursion in axes limits updates (bug #40005).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18877
diff changeset
7204 static std::set<double> updating_axis_limits;
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7205
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
7206 void
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7207 axes::update_axis_limits (const std::string& axis_type,
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7208 const graphics_handle& h)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7209 {
20073
726df008104d maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20071
diff changeset
7210 if (updating_axis_limits.find (get_handle ().value ())
726df008104d maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20071
diff changeset
7211 != updating_axis_limits.end ())
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7212 return;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7213
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7214 Matrix kids = Matrix (1, 1, h.value ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7215
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7216 double min_val = octave_Inf;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7217 double max_val = -octave_Inf;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7218 double min_pos = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7219 double max_neg = -octave_Inf;
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7220
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7221 char update_type = 0;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7222
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7223 Matrix limits;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7224 double val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7225
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7226 #define FIX_LIMITS \
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
7227 if (limits.numel () == 4) \
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7228 { \
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7229 val = limits(0); \
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
7230 if (xfinite (val)) \
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7231 min_val = val; \
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7232 val = limits(1); \
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
7233 if (xfinite (val)) \
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7234 max_val = val; \
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7235 val = limits(2); \
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
7236 if (xfinite (val)) \
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7237 min_pos = val; \
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7238 val = limits(3); \
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
7239 if (xfinite (val)) \
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7240 max_neg = val; \
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7241 } \
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7242 else \
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7243 { \
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
7244 limits.resize (4, 1); \
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7245 limits(0) = min_val; \
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7246 limits(1) = max_val; \
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7247 limits(2) = min_pos; \
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7248 limits(3) = max_neg; \
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7249 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7250
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7251 if (axis_type == "xdata" || axis_type == "xscale"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7252 || axis_type == "xlimmode" || axis_type == "xliminclude"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7253 || axis_type == "xlim")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7254 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7255 if (xproperties.xlimmode_is ("auto"))
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7256 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7257 limits = xproperties.get_xlim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7258 FIX_LIMITS ;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7259
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7260 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'x');
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7261
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7262 limits = xproperties.get_axis_limits (min_val, max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7263 min_pos, max_neg,
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7264 xproperties.xscale_is ("log"));
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7265
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7266 update_type = 'x';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7267 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7268 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7269 else if (axis_type == "ydata" || axis_type == "yscale"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7270 || axis_type == "ylimmode" || axis_type == "yliminclude"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7271 || axis_type == "ylim")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7272 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7273 if (xproperties.ylimmode_is ("auto"))
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7274 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7275 limits = xproperties.get_ylim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7276 FIX_LIMITS ;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7277
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7278 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'y');
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7279
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7280 limits = xproperties.get_axis_limits (min_val, max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7281 min_pos, max_neg,
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7282 xproperties.yscale_is ("log"));
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7283
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7284 update_type = 'y';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7285 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7286 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7287 else if (axis_type == "zdata" || axis_type == "zscale"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7288 || axis_type == "zlimmode" || axis_type == "zliminclude"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7289 || axis_type == "zlim")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7290 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7291 if (xproperties.zlimmode_is ("auto"))
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7292 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7293 limits = xproperties.get_zlim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7294 FIX_LIMITS ;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7295
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7296 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'z');
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7297
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7298 limits = xproperties.get_axis_limits (min_val, max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7299 min_pos, max_neg,
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7300 xproperties.zscale_is ("log"));
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7301
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7302 update_type = 'z';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7303 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7304 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7305 else if (axis_type == "cdata" || axis_type == "climmode"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7306 || axis_type == "cdatamapping" || axis_type == "climinclude"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7307 || axis_type == "clim")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7308 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7309 if (xproperties.climmode_is ("auto"))
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7310 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7311 limits = xproperties.get_clim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7312 FIX_LIMITS ;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7313
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7314 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'c');
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7315
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7316 if (min_val > max_val)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7317 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7318 min_val = min_pos = 0;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7319 max_val = 1;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7320 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7321 else if (min_val == max_val)
13247
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7322 {
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7323 max_val = min_val + 1;
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7324 min_val -= 1;
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7325 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7326
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7327 limits.resize (1, 2);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7328
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7329 limits(0) = min_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7330 limits(1) = max_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7331
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7332 update_type = 'c';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7333 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7334
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7335 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7336 else if (axis_type == "alphadata" || axis_type == "alimmode"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7337 || axis_type == "alphadatamapping" || axis_type == "aliminclude"
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7338 || axis_type == "alim")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7339 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7340 if (xproperties.alimmode_is ("auto"))
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7341 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7342 limits = xproperties.get_alim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7343 FIX_LIMITS ;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7344
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7345 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'a');
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7346
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7347 if (min_val > max_val)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7348 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7349 min_val = min_pos = 0;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7350 max_val = 1;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7351 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7352 else if (min_val == max_val)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7353 max_val = min_val + 1;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7354
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7355 limits.resize (1, 2);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7356
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7357 limits(0) = min_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7358 limits(1) = max_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7359
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7360 update_type = 'a';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7361 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7362
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7363 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7364
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7365 #undef FIX_LIMITS
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7366
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7367 unwind_protect frame;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7368 frame.protect_var (updating_axis_limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7369
18892
868dcab453bd Distinguish axes when checking for recursion in axes limits updates (bug #40005).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18877
diff changeset
7370 updating_axis_limits.insert (get_handle ().value ());
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7371
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7372 switch (update_type)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7373 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7374 case 'x':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7375 xproperties.set_xlim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7376 xproperties.set_xlimmode ("auto");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7377 xproperties.update_xlim ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7378 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7379
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7380 case 'y':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7381 xproperties.set_ylim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7382 xproperties.set_ylimmode ("auto");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7383 xproperties.update_ylim ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7384 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7385
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7386 case 'z':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7387 xproperties.set_zlim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7388 xproperties.set_zlimmode ("auto");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7389 xproperties.update_zlim ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7390 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7391
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7392 case 'c':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7393 xproperties.set_clim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7394 xproperties.set_climmode ("auto");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7395 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7396
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7397 case 'a':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7398 xproperties.set_alim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7399 xproperties.set_alimmode ("auto");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7400 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7401
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7402 default:
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7403 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7404 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7405
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7406 xproperties.update_transform ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7407
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7408 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7409
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
7410 void
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7411 axes::update_axis_limits (const std::string& axis_type)
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
7412 {
20071
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
7413 if ((updating_axis_limits.find (get_handle ().value ())
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
7414 != updating_axis_limits.end ())
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
7415 || (updating_aspectratios.find (get_handle ().value ())
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
7416 != updating_aspectratios.end ()))
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7417 return;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7418
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7419 Matrix kids = xproperties.get_children ();
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7420
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7421 double min_val = octave_Inf;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7422 double max_val = -octave_Inf;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7423 double min_pos = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7424 double max_neg = -octave_Inf;
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7425
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7426 char update_type = 0;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7427
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7428 Matrix limits;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7429
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7430 if (axis_type == "xdata" || axis_type == "xscale"
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7431 || axis_type == "xlimmode" || axis_type == "xliminclude"
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7432 || axis_type == "xlim")
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7433 {
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
7434 if (xproperties.xlimmode_is ("auto"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7435 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7436 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'x');
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7437
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7438 limits = xproperties.get_axis_limits (min_val, max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7439 min_pos, max_neg,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7440 xproperties.xscale_is ("log"));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7441
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7442 update_type = 'x';
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7443 }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7444 }
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7445 else if (axis_type == "ydata" || axis_type == "yscale"
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7446 || axis_type == "ylimmode" || axis_type == "yliminclude"
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7447 || axis_type == "ylim")
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7448 {
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
7449 if (xproperties.ylimmode_is ("auto"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7450 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7451 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'y');
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7452
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7453 limits = xproperties.get_axis_limits (min_val, max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7454 min_pos, max_neg,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7455 xproperties.yscale_is ("log"));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7456
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7457 update_type = 'y';
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7458 }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7459 }
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7460 else if (axis_type == "zdata" || axis_type == "zscale"
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7461 || axis_type == "zlimmode" || axis_type == "zliminclude"
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7462 || axis_type == "zlim")
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7463 {
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
7464 if (xproperties.zlimmode_is ("auto"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7465 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7466 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'z');
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7467
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7468 limits = xproperties.get_axis_limits (min_val, max_val,
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7469 min_pos, max_neg,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7470 xproperties.zscale_is ("log"));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7471
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7472 update_type = 'z';
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7473 }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7474 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7475 else if (axis_type == "cdata" || axis_type == "climmode"
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7476 || axis_type == "cdatamapping" || axis_type == "climinclude"
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7477 || axis_type == "clim")
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7478 {
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
7479 if (xproperties.climmode_is ("auto"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7480 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7481 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'c');
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7482
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7483 if (min_val > max_val)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7484 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7485 min_val = min_pos = 0;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7486 max_val = 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7487 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7488 else if (min_val == max_val)
13247
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7489 {
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7490 max_val = min_val + 1;
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7491 min_val -= 1;
e36c2f4ea8f5 Set clim correctly for patch objects:
Kai Habel <kai.habel@gmx.de>
parents: 13236
diff changeset
7492 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7493
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7494 limits.resize (1, 2);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7495
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7496 limits(0) = min_val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7497 limits(1) = max_val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7498
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7499 update_type = 'c';
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7500 }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7501
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7502 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7503 else if (axis_type == "alphadata" || axis_type == "alimmode"
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7504 || axis_type == "alphadatamapping" || axis_type == "aliminclude"
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7505 || axis_type == "alim")
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7506 {
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7507 if (xproperties.alimmode_is ("auto"))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7508 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7509 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'a');
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7510
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7511 if (min_val > max_val)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7512 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7513 min_val = min_pos = 0;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7514 max_val = 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7515 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7516 else if (min_val == max_val)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7517 max_val = min_val + 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7518
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7519 limits.resize (1, 2);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7520
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7521 limits(0) = min_val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7522 limits(1) = max_val;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7523
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7524 update_type = 'a';
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
7525 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7526
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7527 }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7528
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
7529 unwind_protect frame;
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
7530 frame.protect_var (updating_axis_limits);
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
7531
18892
868dcab453bd Distinguish axes when checking for recursion in axes limits updates (bug #40005).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18877
diff changeset
7532 updating_axis_limits.insert (get_handle ().value ());
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7533
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7534 switch (update_type)
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7535 {
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7536 case 'x':
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7537 xproperties.set_xlim (limits);
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7538 xproperties.set_xlimmode ("auto");
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
7539 xproperties.update_xlim ();
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7540 break;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7541
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7542 case 'y':
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7543 xproperties.set_ylim (limits);
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7544 xproperties.set_ylimmode ("auto");
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
7545 xproperties.update_ylim ();
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7546 break;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7547
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7548 case 'z':
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7549 xproperties.set_zlim (limits);
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7550 xproperties.set_zlimmode ("auto");
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
7551 xproperties.update_zlim ();
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7552 break;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7553
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7554 case 'c':
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7555 xproperties.set_clim (limits);
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7556 xproperties.set_climmode ("auto");
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7557 break;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7558
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7559 case 'a':
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7560 xproperties.set_alim (limits);
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7561 xproperties.set_alimmode ("auto");
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7562 break;
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7563
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7564 default:
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7565 break;
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7566 }
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
7567
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
7568 xproperties.update_transform ();
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
7569 }
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
7570
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7571 inline
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
7572 double force_in_range (double x, double lower, double upper)
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7573 {
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7574 if (x < lower)
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
7575 return lower;
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7576 else if (x > upper)
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
7577 return upper;
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7578 else
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
7579 return x;
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7580 }
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7581
14311
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7582 static Matrix
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7583 do_zoom (double val, double factor, const Matrix& lims, bool is_logscale)
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7584 {
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7585 Matrix new_lims = lims;
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7586
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7587 double lo = lims(0);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7588 double hi = lims(1);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7589
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7590 bool is_negative = lo < 0 && hi < 0;
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7591
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7592 if (is_logscale)
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7593 {
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7594 if (is_negative)
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7595 {
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7596 double tmp = hi;
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7597 hi = std::log10 (-lo);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7598 lo = std::log10 (-tmp);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7599 val = std::log10 (-val);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7600 }
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7601 else
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7602 {
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7603 hi = std::log10 (hi);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7604 lo = std::log10 (lo);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7605 val = std::log10 (val);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7606 }
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7607 }
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7608
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7609 // Perform the zooming
20074
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
7610 lo = val + (lo - val) / factor;
6ba3d0f7c6e8 improve mouse zooming for Qt plotting (bug #44302)
John W. Eaton <jwe@octave.org>
parents: 20073
diff changeset
7611 hi = val + (hi - val) / factor;
14311
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7612
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7613 if (is_logscale)
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7614 {
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7615 if (is_negative)
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7616 {
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7617 double tmp = -std::pow (10.0, hi);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7618 hi = -std::pow (10.0, lo);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7619 lo = tmp;
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7620 }
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7621 else
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7622 {
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7623 lo = std::pow (10.0, lo);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7624 hi = std::pow (10.0, hi);
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7625 }
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7626 }
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7627
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7628 new_lims(0) = lo;
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7629 new_lims(1) = hi;
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7630
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7631 return new_lims;
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7632 }
d4f37aa5d126 fix zooming for logscale figures with fltk+opengl
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
7633
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7634 void
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7635 axes::properties::zoom_about_point (const std::string& mode,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7636 double x, double y, double factor,
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7637 bool push_to_zoom_stack)
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7638 {
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7639 // FIXME: Do we need error checking here?
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7640 Matrix xlims = get_xlim ().matrix_value ();
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7641 Matrix ylims = get_ylim ().matrix_value ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7642
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7643 // Get children axes limits
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7644 Matrix kids = get_children ();
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7645 double minx = octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7646 double maxx = -octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7647 double min_pos_x = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7648 double max_neg_x = -octave_Inf;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7649 get_children_limits (minx, maxx, min_pos_x, max_neg_x, kids, 'x');
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7650
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7651 double miny = octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7652 double maxy = -octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7653 double min_pos_y = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7654 double max_neg_y = -octave_Inf;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7655 get_children_limits (miny, maxy, min_pos_y, max_neg_y, kids, 'y');
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7656
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14323
diff changeset
7657 xlims = do_zoom (x, factor, xlims, xscale_is ("log"));
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14323
diff changeset
7658 ylims = do_zoom (y, factor, ylims, yscale_is ("log"));
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7659
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7660 zoom (mode, xlims, ylims, push_to_zoom_stack);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7661 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7662
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7663 void
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7664 axes::properties::zoom (const std::string& mode, double factor,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7665 bool push_to_zoom_stack)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7666 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7667 // FIXME: Do we need error checking here?
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7668 Matrix xlims = get_xlim ().matrix_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7669 Matrix ylims = get_ylim ().matrix_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7670
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7671 double x = (xlims(0) + xlims(1)) / 2;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7672 double y = (ylims(0) + ylims(1)) / 2;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7673
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7674 zoom_about_point (mode, x, y, factor, push_to_zoom_stack);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7675 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7676
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7677 void
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7678 axes::properties::push_zoom_stack (void)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7679 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7680 // FIXME: Maybe make the size of the undo stack configurable. A limit
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7681 // of 500 elements means 100 pan, rotate, or zoom actions are stored
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7682 // and may be undone.
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7683
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7684 if (zoom_stack.size () >= 500)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7685 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7686 for (int i = 0; i < 5; i++)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7687 zoom_stack.pop_back ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7688 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7689
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7690 zoom_stack.push_front (xlimmode.get ());
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7691 zoom_stack.push_front (xlim.get ());
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7692 zoom_stack.push_front (ylimmode.get ());
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7693 zoom_stack.push_front (ylim.get ());
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7694 zoom_stack.push_front (view.get ());
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7695 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7696
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7697 void
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7698 axes::properties::zoom (const std::string& mode,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7699 const Matrix& xl, const Matrix& yl,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
7700 bool push_to_zoom_stack)
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7701 {
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7702 if (push_to_zoom_stack)
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7703 push_zoom_stack ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7704
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7705 if (mode == "horizontal" || mode == "both")
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7706 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7707 xlim = xl;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7708 xlimmode = "manual";
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7709 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7710
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7711 if (mode == "vertical" || mode == "both")
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7712 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7713 ylim = yl;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7714 ylimmode = "manual";
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7715 }
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7716
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7717 update_transform ();
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7718
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7719 if (mode == "horizontal" || mode == "both")
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7720 update_xlim ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7721
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7722 if (mode == "vertical" || mode == "both")
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7723 update_ylim ();
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7724 }
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7725
14314
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7726 static Matrix
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7727 do_translate (double x0, double x1, const Matrix& lims, bool is_logscale)
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7728 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7729 Matrix new_lims = lims;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7730
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7731 double lo = lims(0);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7732 double hi = lims(1);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7733
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7734 bool is_negative = lo < 0 && hi < 0;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7735
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7736 double delta;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7737
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7738 if (is_logscale)
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7739 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7740 if (is_negative)
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7741 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7742 double tmp = hi;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7743 hi = std::log10 (-lo);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7744 lo = std::log10 (-tmp);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7745 x0 = -x0;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7746 x1 = -x1;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7747 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7748 else
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7749 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7750 hi = std::log10 (hi);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7751 lo = std::log10 (lo);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7752 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7753
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7754 delta = std::log10 (x0) - std::log10 (x1);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7755 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7756 else
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7757 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7758 delta = x0 - x1;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7759 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7760
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7761 // Perform the translation
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7762 lo += delta;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7763 hi += delta;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7764
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7765 if (is_logscale)
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7766 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7767 if (is_negative)
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7768 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7769 double tmp = -std::pow (10.0, hi);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7770 hi = -std::pow (10.0, lo);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7771 lo = tmp;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7772 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7773 else
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7774 {
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7775 lo = std::pow (10.0, lo);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7776 hi = std::pow (10.0, hi);
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7777 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7778 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7779
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7780 new_lims(0) = lo;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7781 new_lims(1) = hi;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7782
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7783 return new_lims;
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7784 }
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7785
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7786 void
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7787 axes::properties::translate_view (const std::string& mode,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7788 double x0, double x1, double y0, double y1,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7789 bool push_to_zoom_stack)
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7790 {
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7791 // FIXME: Do we need error checking here?
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7792 Matrix xlims = get_xlim ().matrix_value ();
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7793 Matrix ylims = get_ylim ().matrix_value ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7794
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7795 // Get children axes limits
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7796 Matrix kids = get_children ();
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7797 double minx = octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7798 double maxx = -octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7799 double min_pos_x = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7800 double max_neg_x = -octave_Inf;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7801 get_children_limits (minx, maxx, min_pos_x, max_neg_x, kids, 'x');
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7802
9455
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7803 double miny = octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7804 double maxy = -octave_Inf;
ee8a035f3997 imported patch fltk_zoom
shaia@mars.bioc
parents: 9443
diff changeset
7805 double min_pos_y = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7806 double max_neg_y = -octave_Inf;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7807 get_children_limits (miny, maxy, min_pos_y, max_neg_y, kids, 'y');
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7808
14314
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7809 xlims = do_translate (x0, x1, xlims, xscale_is ("log"));
17de694961f5 make panning work for logscale axes
John W. Eaton <jwe@octave.org>
parents: 14313
diff changeset
7810 ylims = do_translate (y0, y1, ylims, yscale_is ("log"));
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
7811
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7812 zoom (mode, xlims, ylims, push_to_zoom_stack);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7813 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7814
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7815 void
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7816 axes::properties::pan (const std::string& mode, double factor,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7817 bool push_to_zoom_stack)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7818 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7819 // FIXME: Do we need error checking here?
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7820 Matrix xlims = get_xlim ().matrix_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7821 Matrix ylims = get_ylim ().matrix_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7822
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7823 double x0 = (xlims(0) + xlims(1)) / 2;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7824 double y0 = (ylims(0) + ylims(1)) / 2;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7825
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7826 double x1 = x0 + (xlims(1) - xlims(0)) * factor;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7827 double y1 = y0 + (ylims(1) - ylims(0)) * factor;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7828
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7829 translate_view (mode, x0, x1, y0, y1, push_to_zoom_stack);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7830 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7831
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7832 void
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7833 axes::properties::rotate3d (double x0, double x1, double y0, double y1,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7834 bool push_to_zoom_stack)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7835 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7836 if (push_to_zoom_stack)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7837 push_zoom_stack ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7838
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7839 Matrix bb = get_boundingbox (true);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7840 Matrix new_view = get_view ().matrix_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7841
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7842 // Compute new view angles
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7843 new_view(0) += ((x0 - x1) * (180.0 / bb(2)));
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7844 new_view(1) += ((y1 - y0) * (180.0 / bb(3)));
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7845
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7846 // Clipping
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7847 new_view(1) = std::min (new_view(1), 90.0);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7848 new_view(1) = std::max (new_view(1), -90.0);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7849 if (new_view(0) > 180.0)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7850 new_view(0) -= 360.0;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7851 else if (new_view(0) < -180.0)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7852 new_view(0) += 360.0;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7853
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7854 // Snapping
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7855 double snapMargin = 1.0;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7856 for (int a = -90; a <= 90; a += 90)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7857 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7858 if ((a - snapMargin) < new_view(1)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7859 && new_view(1) < (a + snapMargin))
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7860 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7861 new_view(1) = a;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7862 break;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7863 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7864 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7865
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7866 for (int a = -180; a <= 180; a += 180)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7867 if ((a - snapMargin) < new_view(0)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7868 && new_view(0) < (a + snapMargin))
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7869 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7870 if (a == 180)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7871 new_view(0) = -180;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7872 else
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7873 new_view(0) = a;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7874 break;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7875 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7876
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7877 // Update axes properties
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7878 set_view (new_view);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7879 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7880
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7881 void
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7882 axes::properties::rotate_view (double delta_el, double delta_az,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7883 bool push_to_zoom_stack)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7884 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7885 if (push_to_zoom_stack)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7886 push_zoom_stack ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7887
10792
91342260063e mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10733
diff changeset
7888 Matrix v = get_view ().matrix_value ();
91342260063e mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10733
diff changeset
7889
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
7890 v(1) += delta_el;
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
7891
15017
dd4ad69e4ab9 maint: Fix a few Octave coding convention violations.
Rik <rik@octave.org>
parents: 14861
diff changeset
7892 if (v(1) > 90)
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
7893 v(1) = 90;
15017
dd4ad69e4ab9 maint: Fix a few Octave coding convention violations.
Rik <rik@octave.org>
parents: 14861
diff changeset
7894 if (v(1) < -90)
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
7895 v(1) = -90;
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
7896
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
7897 v(0) = fmod (v(0) - delta_az + 720,360);
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
7898
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
7899 set_view (v);
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7900
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
7901 update_transform ();
10792
91342260063e mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10733
diff changeset
7902 }
91342260063e mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10733
diff changeset
7903
91342260063e mouse rotation for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10733
diff changeset
7904 void
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7905 axes::properties::unzoom (void)
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7906 {
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7907 if (zoom_stack.size () >= 5)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7908 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7909 view = zoom_stack.front ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7910 zoom_stack.pop_front ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7911
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7912 ylim = zoom_stack.front ();
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7913 zoom_stack.pop_front ();
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7914
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7915 ylimmode = zoom_stack.front ();
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7916 zoom_stack.pop_front ();
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7917
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7918 xlim = zoom_stack.front ();
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7919 zoom_stack.pop_front ();
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7920
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7921 xlimmode = zoom_stack.front ();
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7922 zoom_stack.pop_front ();
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7923
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7924 update_transform ();
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7925
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7926 update_xlim ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7927 update_ylim ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7928
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7929 update_view ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7930 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7931 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7932
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7933 void
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7934 axes::properties::clear_zoom_stack (bool do_unzoom)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7935 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7936 size_t items_to_leave_on_stack = do_unzoom ? 5 : 0;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7937
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7938 while (zoom_stack.size () > items_to_leave_on_stack)
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7939 zoom_stack.pop_front ();
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7940
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7941 if (do_unzoom)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
7942 unzoom ();
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7943 }
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7849
diff changeset
7944
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
7945 void
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
7946 axes::reset_default_properties (void)
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
7947 {
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
7948 // empty list of local defaults
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
7949 default_properties = property_list ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
7950
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
7951 // reset factory defaults
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
7952 set_defaults ("reset");
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
7953 }
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
7954
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7955 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7956 axes::initialize (const graphics_object& go)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7957 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7958 base_graphics_object::initialize (go);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7959
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7960 xinitialize (xproperties.get_title ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7961 xinitialize (xproperties.get_xlabel ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7962 xinitialize (xproperties.get_ylabel ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7963 xinitialize (xproperties.get_zlabel ());
17098
786bcce466e9 Initialize the tightinset during initialization of axes.
Ben Abbott <bpabbott@mac.com>
parents: 17081
diff changeset
7964
786bcce466e9 Initialize the tightinset during initialization of axes.
Ben Abbott <bpabbott@mac.com>
parents: 17081
diff changeset
7965 xproperties.sync_positions ();
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7966 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
7967
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
7968 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7317
diff changeset
7969
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7970 Matrix
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7971 line::properties::compute_xlim (void) const
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7972 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7973 Matrix m (1, 4);
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7974
10596
24e915c602e7 Remove line object props ldata, udata, xldata, xudata.
Ben Abbott <bpabbott@mac.com>
parents: 10565
diff changeset
7975 m(0) = xdata.min_val ();
24e915c602e7 Remove line object props ldata, udata, xldata, xudata.
Ben Abbott <bpabbott@mac.com>
parents: 10565
diff changeset
7976 m(1) = xdata.max_val ();
24e915c602e7 Remove line object props ldata, udata, xldata, xudata.
Ben Abbott <bpabbott@mac.com>
parents: 10565
diff changeset
7977 m(2) = xdata.min_pos ();
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7978 m(3) = xdata.max_neg ();
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7979
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7980 return m;
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7981 }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7982
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7983 Matrix
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7984 line::properties::compute_ylim (void) const
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7985 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7986 Matrix m (1, 4);
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7987
10596
24e915c602e7 Remove line object props ldata, udata, xldata, xudata.
Ben Abbott <bpabbott@mac.com>
parents: 10565
diff changeset
7988 m(0) = ydata.min_val ();
24e915c602e7 Remove line object props ldata, udata, xldata, xudata.
Ben Abbott <bpabbott@mac.com>
parents: 10565
diff changeset
7989 m(1) = ydata.max_val ();
24e915c602e7 Remove line object props ldata, udata, xldata, xudata.
Ben Abbott <bpabbott@mac.com>
parents: 10565
diff changeset
7990 m(2) = ydata.min_pos ();
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
7991 m(3) = ydata.max_neg ();
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7992
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7993 return m;
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
7994 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
7995
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
7996 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
7997
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
7998 Matrix
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
7999 text::properties::get_data_position (void) const
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8000 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8001 Matrix pos = get_position ().matrix_value ();
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8002
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8003 if (! units_is ("data"))
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8004 pos = convert_text_position (pos, *this, get_units (), "data");
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8005
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8006 return pos;
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8007 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8008
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8009 Matrix
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8010 text::properties::get_extent_matrix (void) const
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8011 {
14413
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8012 // FIXME: Should this function also add the (x,y) base position?
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8013 return extent.get ().matrix_value ();
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8014 }
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8015
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8016 octave_value
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8017 text::properties::get_extent (void) const
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8018 {
14413
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8019 // FIXME: This doesn't work right for 3D plots.
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8020 // (It doesn't in Matlab either, at least not in version 6.5.)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8021 Matrix m = extent.get ().matrix_value ();
14413
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8022 Matrix pos = get_position ().matrix_value ();
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8023 Matrix p = convert_text_position (pos, *this, get_units (), "pixels");
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8024
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8025 m(0) += p(0);
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8026 m(1) += p(1);
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8027
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8028 return convert_text_position (m, *this, "pixels", get_units ());
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8029 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8030
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8031 void
19239
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8032 text::properties::set_fontunits (const octave_value& v)
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8033 {
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8034 if (! error_state)
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8035 {
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8036 caseless_str old_fontunits = get_fontunits ();
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8037 if (fontunits.set (v, true))
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8038 {
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8039 update_fontunits (old_fontunits);
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8040 mark_modified ();
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8041 }
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8042 }
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8043 }
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8044
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8045 void
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8046 text::properties::update_fontunits (const caseless_str& old_units)
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8047 {
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8048 caseless_str new_units = get_fontunits ();
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8049 double parent_height = 0;
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8050 double fsz = get_fontsize ();
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8051
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8052 if (new_units == "normalized")
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8053 {
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8054 graphics_object go (gh_manager::get_object (get___myhandle__ ()));
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8055 graphics_object ax (go.get_ancestor ("axes"));
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8056
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8057 parent_height = ax.get_properties ().get_boundingbox (true).elem (3);
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8058 }
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8059
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8060 fsz = convert_font_size (fsz, old_units, new_units, parent_height);
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8061
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8062 set_fontsize (octave_value (fsz));
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8063 }
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8064
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8065 void
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8066 text::properties::update_font (void)
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8067 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8068 #ifdef HAVE_FREETYPE
10526
660c244d3206 Don't call text_renderer.set_font if HAVE_FONTCONFIG is not set (bug #29570)
David Bateman <dbateman@free.fr>
parents: 10402
diff changeset
8069 #ifdef HAVE_FONTCONFIG
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8070 renderer.set_font (get ("fontname").string_value (),
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8071 get ("fontweight").string_value (),
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8072 get ("fontangle").string_value (),
19239
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19236
diff changeset
8073 get ("fontsize_points").double_value ());
10526
660c244d3206 Don't call text_renderer.set_font if HAVE_FONTCONFIG is not set (bug #29570)
David Bateman <dbateman@free.fr>
parents: 10402
diff changeset
8074 #endif
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8075 renderer.set_color (get_color_rgb ());
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8076 #endif
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8077 }
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8078
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8079 void
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8080 text::properties::update_text_extent (void)
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8081 {
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
8082 #ifdef HAVE_FREETYPE
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8083
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
8084 int halign = 0;
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
8085 int valign = 0;
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8086
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8087 if (horizontalalignment_is ("center"))
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8088 halign = 1;
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8089 else if (horizontalalignment_is ("right"))
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8090 halign = 2;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
8091
16206
9ba5c5ed3aeb Add new verticalalignment option 'cap' for OpenGL plotting.
Rik <rik@octave.org>
parents: 16204
diff changeset
8092 if (verticalalignment_is ("middle"))
9ba5c5ed3aeb Add new verticalalignment option 'cap' for OpenGL plotting.
Rik <rik@octave.org>
parents: 16204
diff changeset
8093 valign = 1;
9ba5c5ed3aeb Add new verticalalignment option 'cap' for OpenGL plotting.
Rik <rik@octave.org>
parents: 16204
diff changeset
8094 else if (verticalalignment_is ("top"))
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8095 valign = 2;
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8096 else if (verticalalignment_is ("baseline"))
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8097 valign = 3;
16206
9ba5c5ed3aeb Add new verticalalignment option 'cap' for OpenGL plotting.
Rik <rik@octave.org>
parents: 16204
diff changeset
8098 else if (verticalalignment_is ("cap"))
9ba5c5ed3aeb Add new verticalalignment option 'cap' for OpenGL plotting.
Rik <rik@octave.org>
parents: 16204
diff changeset
8099 valign = 4;
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8100
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8101 Matrix bbox;
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8102
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8103 // FIXME: string should be parsed only when modified, for efficiency
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8104
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8105 octave_value string_prop = get_string ();
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8106
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8107 string_vector sv = string_prop.all_strings ();
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8108
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8109 renderer.text_to_pixels (sv.join ("\n"), pixels, bbox,
17319
27fc61cfbc6e Use interpreter property when rendering text objects (bug #39830).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17286
diff changeset
8110 halign, valign, get_rotation (),
27fc61cfbc6e Use interpreter property when rendering text objects (bug #39830).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17286
diff changeset
8111 get_interpreter ());
14413
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8112 /* The bbox is relative to the text's position.
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
8113 We'll leave it that way, because get_position () does not return
14413
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8114 valid results when the text is first constructed.
4f160344236a 2011-04-26 Daniel Wagenaar <daw@caltech.edu>
Ben Abbott <bpabbott@mac.com>
parents: 14395
diff changeset
8115 Conversion to proper coordinates is performed in get_extent. */
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11450
diff changeset
8116 set_extent (bbox);
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12910
diff changeset
8117
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8118 #endif
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
8119
20071
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
8120 if (autopos_tag_is ("xlabel") || autopos_tag_is ("ylabel")
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
8121 || autopos_tag_is ("zlabel") || autopos_tag_is ("title"))
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12422
diff changeset
8122 update_autopos ("sync");
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8123 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8124
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8125 void
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
8126 text::properties::request_autopos (void)
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
8127 {
20071
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
8128 if (autopos_tag_is ("xlabel") || autopos_tag_is ("ylabel")
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
8129 || autopos_tag_is ("zlabel") || autopos_tag_is ("title"))
12422
a3be83af8cfa simplifications in position updating functions for axes labels and titles
Konstantinos Poulios <logari81@gmail.com>
parents: 12389
diff changeset
8130 update_autopos (get_autopos_tag ());
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
8131 }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
8132
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12348
diff changeset
8133 void
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8134 text::properties::update_units (void)
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8135 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8136 if (! units_is ("data"))
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8137 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8138 set_xliminclude ("off");
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8139 set_yliminclude ("off");
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8140 set_zliminclude ("off");
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8141 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8142
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8143 Matrix pos = get_position ().matrix_value ();
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8144
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8145 pos = convert_text_position (pos, *this, cached_units, get_units ());
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8146 // FIXME: if the current axes view is 2D, then one should
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8147 // probably drop the z-component of "pos" and leave "zliminclude"
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8148 // to "off".
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8149 set_position (pos);
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8150
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8151 if (units_is ("data"))
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8152 {
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8153 set_xliminclude ("on");
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8154 set_yliminclude ("on");
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8155 // FIXME: see above
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8156 set_zliminclude ("off");
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8157 }
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8158
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8159 cached_units = get_units ();
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10315
diff changeset
8160 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8161
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8162 double
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8163 text::properties::get_fontsize_points (double box_pix_height) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8164 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8165 double fs = get_fontsize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8166 double parent_height = box_pix_height;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8167
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8168 if (fontunits_is ("normalized") && parent_height <= 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8169 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8170 graphics_object go (gh_manager::get_object (get___myhandle__ ()));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8171 graphics_object ax (go.get_ancestor ("axes"));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8172
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
8173 parent_height = ax.get_properties ().get_boundingbox (true).elem (3);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8174 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8175
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8176 return convert_font_size (fs, get_fontunits (), "points", parent_height);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8177 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8178
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8179 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8180
9680
73153525df9a initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9605
diff changeset
8181 octave_value
73153525df9a initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9605
diff changeset
8182 image::properties::get_color_data (void) const
73153525df9a initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9605
diff changeset
8183 {
73153525df9a initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9605
diff changeset
8184 return convert_cdata (*this, get_cdata (),
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8185 cdatamapping_is ("scaled"), 3);
9680
73153525df9a initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9605
diff changeset
8186 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8187
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8188 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8189
7833
8ff92634982d Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7829
diff changeset
8190 octave_value
8ff92634982d Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7829
diff changeset
8191 patch::properties::get_color_data (void) const
8ff92634982d Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7829
diff changeset
8192 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
8193 octave_value fvc = get_facevertexcdata ();
11168
36442102c340 Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
8194 if (fvc.is_undefined () || fvc.is_empty ())
36442102c340 Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
8195 return Matrix ();
36442102c340 Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
8196 else
36442102c340 Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
8197 return convert_cdata (*this, fvc,cdatamapping_is ("scaled"), 2);
7833
8ff92634982d Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7829
diff changeset
8198 }
6807
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
8199
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8200 static bool updating_patch_data = false;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8201
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8202 void
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8203 patch::properties::update_fvc (void)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8204 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8205 if (updating_patch_data)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8206 return;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8207
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8208 Matrix xd = get_xdata ().matrix_value ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8209 Matrix yd = get_ydata ().matrix_value ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8210 Matrix zd = get_zdata ().matrix_value ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8211 NDArray cd = get_cdata ().array_value ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8212
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8213 bad_data_msg = std::string ();
20071
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
8214 if (xd.dims () != yd.dims ()
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
8215 || (xd.dims () != zd.dims () && ! zd.is_empty ()))
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8216 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8217 bad_data_msg = "x/y/zdata should have the same dimensions";
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8218 return;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8219 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8220
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8221 // Faces and Vertices
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8222 dim_vector dv;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8223 bool is3D = false;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8224 octave_idx_type nr = xd.rows ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8225 octave_idx_type nc = xd.columns ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8226 if (nr == 1 && nc > 1)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8227 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8228 nr = nc;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8229 nc = 1;
19141
5bfedd39cc77 Fix indexing in patch if x/y/zdata are row vectors (bug #42822)
Andreas Weber <andy.weber.aw@gmail.com>
parents: 19095
diff changeset
8230 xd = xd.as_column ();
5bfedd39cc77 Fix indexing in patch if x/y/zdata are row vectors (bug #42822)
Andreas Weber <andy.weber.aw@gmail.com>
parents: 19095
diff changeset
8231 yd = yd.as_column ();
5bfedd39cc77 Fix indexing in patch if x/y/zdata are row vectors (bug #42822)
Andreas Weber <andy.weber.aw@gmail.com>
parents: 19095
diff changeset
8232 zd = zd.as_column ();
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8233 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8234
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8235 dv(0) = nr * nc;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8236 if (zd.is_empty ())
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8237 dv(1) = 2;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8238 else
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8239 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8240 dv(1) = 3;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8241 is3D = true;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8242 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8243
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8244 Matrix vert (dv);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8245 Matrix idx (nc, nr);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8246
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8247 octave_idx_type kk = 0;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8248 for (octave_idx_type jj = 0; jj < nc; jj++)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8249 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8250 for (octave_idx_type ii = 0; ii < nr; ii++)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8251 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8252 vert(kk,0) = xd(ii,jj);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8253 vert(kk,1) = yd(ii,jj);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8254 if (is3D)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8255 vert(kk,2) = zd(ii,jj);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8256
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8257 idx(jj,ii) = static_cast<double> (kk+1);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8258
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8259 kk++;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8260 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8261 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8262
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8263 // facevertexcdata
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8264 Matrix fvc;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8265 if (cd.ndims () == 3)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8266 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8267 dv(0) = cd.rows () * cd.columns ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8268 dv(1) = cd.dims ()(2);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8269 fvc = cd.reshape (dv);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8270 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8271 else
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8272 fvc = cd.as_column ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8273
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8274 // FIXME: shouldn't we update facevertexalphadata here ?
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8275
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8276 unwind_protect frame;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8277 frame.protect_var (updating_patch_data);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8278 updating_patch_data = true;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8279
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8280 faces.set (idx);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8281 vertices.set (vert);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8282 facevertexcdata.set (fvc);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8283 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8284
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8285
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8286 void
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8287 patch::properties::update_data (void)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8288 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8289 if (updating_patch_data)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8290 return;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8291
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8292 Matrix idx = get_faces ().matrix_value ().transpose ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8293 Matrix vert = get_vertices ().matrix_value ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8294 NDArray fvc = get_facevertexcdata ().array_value ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8295
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8296 octave_idx_type nfaces = idx.columns ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8297 octave_idx_type nvert = vert.rows ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8298
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8299 // Check all vertices in faces are defined
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8300 bad_data_msg = std::string ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8301 if (static_cast<double> (nvert) < idx.row_max ().max ())
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8302 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8303 bad_data_msg = "some vertices in \"faces\" property are undefined";
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8304 return;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8305 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8306
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8307 // Replace NaNs
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8308 if (idx.any_element_is_inf_or_nan ())
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8309 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8310 for (octave_idx_type jj = 0; jj < idx.columns (); jj++)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8311 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8312 double valid_vert = idx(0,jj);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8313 bool turn_valid = false;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8314 for (octave_idx_type ii = 0; ii < idx.rows (); ii++)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8315 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8316 if (xisnan (idx(ii,jj)) || turn_valid)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8317 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8318 idx(ii,jj) = valid_vert;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8319 turn_valid = true;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8320 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8321 else
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8322 valid_vert = idx(ii,jj);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8323 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8324 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8325 }
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
8326
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8327 // Build cdata
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8328 dim_vector dv = dim_vector::alloc (3);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8329 NDArray cd;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8330 bool pervertex = false;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8331
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8332 if (fvc.rows () == nfaces || fvc.rows () == 1)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8333 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8334 dv(0) = 1;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8335 dv(1) = fvc.rows ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8336 dv(2) = fvc.columns ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8337 cd = fvc.reshape (dv);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8338 }
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
8339 else
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8340 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8341 if (! fvc.is_empty ())
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8342 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8343 dv(0) = idx.rows ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8344 dv(1) = nfaces;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8345 dv(2) = fvc.columns ();
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8346 cd.resize (dv);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8347 pervertex = true;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8348 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8349 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8350
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
8351 // Build x,y,zdata and eventually per vertex cdata
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
8352 Matrix xd (idx.dims ());
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8353 Matrix yd (idx.dims ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8354 Matrix zd;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8355 bool has_zd = false;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8356 if (vert.columns () > 2)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8357 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8358 zd = Matrix (idx.dims ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8359 has_zd = true;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8360 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8361
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
8362
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8363 for (octave_idx_type jj = 0; jj < nfaces; jj++)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8364 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8365 for (octave_idx_type ii = 0; ii < idx.rows (); ii++)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8366 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8367 octave_idx_type row = static_cast<octave_idx_type> (idx(ii,jj)-1);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8368 xd(ii,jj) = vert(row,0);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8369 yd(ii,jj) = vert(row,1);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8370
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8371 if (has_zd)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8372 zd(ii,jj) = vert(row,2);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
8373
19091
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8374 if (pervertex)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8375 for (int kk = 0; kk < fvc.columns (); kk++)
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8376 cd(ii,jj,kk) = fvc(row,kk);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8377 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8378 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8379
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8380
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8381 unwind_protect frame;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8382 frame.protect_var (updating_patch_data);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8383 updating_patch_data = true;
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8384
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8385 set_xdata (xd);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8386 set_ydata (yd);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8387 set_zdata (zd);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8388 set_cdata (cd);
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8389 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19082
diff changeset
8390
6807
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
8391 // ---------------------------------------------------------------------
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
8392
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8393 octave_value
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8394 surface::properties::get_color_data (void) const
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8395 {
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8396 return convert_cdata (*this, get_cdata (), cdatamapping_is ("scaled"), 3);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8397 }
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8398
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8399 inline void
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8400 cross_product (double x1, double y1, double z1,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8401 double x2, double y2, double z2,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8402 double& x, double& y, double& z)
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8403 {
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8404 x += (y1 * z2 - z1 * y2);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8405 y += (z1 * x2 - x1 * z2);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8406 z += (x1 * y2 - y1 * x2);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8407 }
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8408
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8409 void
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8410 surface::properties::update_normals (void)
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8411 {
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8412 if (normalmode_is ("auto"))
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8413 {
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8414 Matrix x = get_xdata ().matrix_value ();
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8415 Matrix y = get_ydata ().matrix_value ();
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8416 Matrix z = get_zdata ().matrix_value ();
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8417
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
8418 int p = z.columns ();
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
8419 int q = z.rows ();
19142
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8420
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8421 // FIXME: There might be a cleaner way to do this. When data is changed
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8422 // the update_xdata, update_ydata, update_zdata routines are called in a
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8423 // serial fashion. Until the final call to update_zdata the matrices
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8424 // will be of mismatched dimensions which can cause an out-of-bound
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8425 // indexing in the code below. This one-liner prevents calculating
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8426 // normals until dimensions match.
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8427 if (x.columns () != p || y.rows () != q)
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8428 return;
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8429
c66029adf853 Fix out-of-bound indexing in update_normals (bug #42823).
Rik <rik@octave.org>
parents: 19141
diff changeset
8430 NDArray n (dim_vector (q, p, 3), 0.0);
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8431
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8432 bool x_mat = (x.rows () == q);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8433 bool y_mat = (y.columns () == p);
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8434
18099
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
8435 int i1, i2, i3, j1, j2, j3;
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
8436 i1 = i2 = i3 = 0;
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17861
diff changeset
8437 j1 = j2 = j3 = 0;
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8438
8449
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8439 for (int i = 0; i < p; i++)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8440 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8441 if (y_mat)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8442 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8443 i1 = i - 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8444 i2 = i;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8445 i3 = i + 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8446 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8447
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8448 for (int j = 0; j < q; j++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8449 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8450 if (x_mat)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8451 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8452 j1 = j - 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8453 j2 = j;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8454 j3 = j + 1;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8455 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8456
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8457 double& nx = n(j, i, 0);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8458 double& ny = n(j, i, 1);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8459 double& nz = n(j, i, 2);
8449
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8460
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8461 if ((j > 0) && (i > 0))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8462 // upper left quadrangle
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8463 cross_product
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8464 (x(j1,i-1)-x(j2,i), y(j-1,i1)-y(j,i2), z(j-1,i-1)-z(j,i),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8465 x(j2,i-1)-x(j1,i), y(j,i1)-y(j-1,i2), z(j,i-1)-z(j-1,i),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8466 nx, ny, nz);
8449
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8467
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8468 if ((j > 0) && (i < (p -1)))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8469 // upper right quadrangle
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8470 cross_product
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8471 (x(j1,i+1)-x(j2,i), y(j-1,i3)-y(j,i2), z(j-1,i+1)-z(j,i),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8472 x(j1,i)-x(j2,i+1), y(j-1,i2)-y(j,i3), z(j-1,i)-z(j,i+1),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8473 nx, ny, nz);
8449
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8474
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8475 if ((j < (q - 1)) && (i > 0))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8476 // lower left quadrangle
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8477 cross_product
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8478 (x(j2,i-1)-x(j3,i), y(j,i1)-y(j+1,i2), z(j,i-1)-z(j+1,i),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8479 x(j3,i-1)-x(j2,i), y(j+1,i1)-y(j,i2), z(j+1,i-1)-z(j,i),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8480 nx, ny, nz);
8449
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8481
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8482 if ((j < (q - 1)) && (i < (p -1)))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8483 // lower right quadrangle
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8484 cross_product
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8485 (x(j3,i)-x(j2,i+1), y(j+1,i2)-y(j,i3), z(j+1,i)-z(j,i+1),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8486 x(j3,i+1)-x(j2,i), y(j+1,i3)-y(j,i2), z(j+1,i+1)-z(j,i),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8487 nx, ny, nz);
8449
448188853722 Calculate surface normals for boundaries, use more neighboring
Kai Habel
parents: 8341
diff changeset
8488
11450
5eb10763069f substitute and use LAPACK_LIBS in mkoctfile script
John W. Eaton <jwe@octave.org>
parents: 11431
diff changeset
8489 double d = -std::max (std::max (fabs (nx), fabs (ny)), fabs (nz));
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8490
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8491 nx /= d;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8492 ny /= d;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8493 nz /= d;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8494 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
8495 }
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8496 vertexnormals = n;
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8497 }
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
8498 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8499
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8500 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8501
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
8502 void
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8503 hggroup::properties::update_limits (void) const
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8504 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8505 graphics_object obj = gh_manager::get_object (__myhandle__);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8506
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8507 if (obj)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8508 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8509 obj.update_axis_limits ("xlim");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8510 obj.update_axis_limits ("ylim");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8511 obj.update_axis_limits ("zlim");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8512 obj.update_axis_limits ("clim");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8513 obj.update_axis_limits ("alim");
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8514 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8515 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8516
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
8517 void
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8518 hggroup::properties::update_limits (const graphics_handle& h) const
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8519 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8520 graphics_object obj = gh_manager::get_object (__myhandle__);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8521
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8522 if (obj)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8523 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8524 obj.update_axis_limits ("xlim", h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8525 obj.update_axis_limits ("ylim", h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8526 obj.update_axis_limits ("zlim", h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8527 obj.update_axis_limits ("clim", h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8528 obj.update_axis_limits ("alim", h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8529 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8530 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8531
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8532 static bool updating_hggroup_limits = false;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8533
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8534 void
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8535 hggroup::update_axis_limits (const std::string& axis_type,
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8536 const graphics_handle& h)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8537 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8538 if (updating_hggroup_limits)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8539 return;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8540
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8541 Matrix kids = Matrix (1, 1, h.value ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
8542
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8543 double min_val = octave_Inf;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8544 double max_val = -octave_Inf;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8545 double min_pos = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8546 double max_neg = -octave_Inf;
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8547
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8548 Matrix limits;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8549 double val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8550
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8551 char update_type = 0;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8552
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8553 if (axis_type == "xlim" || axis_type == "xliminclude")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8554 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8555 limits = xproperties.get_xlim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8556 update_type = 'x';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8557 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8558 else if (axis_type == "ylim" || axis_type == "yliminclude")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8559 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8560 limits = xproperties.get_ylim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8561 update_type = 'y';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8562 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8563 else if (axis_type == "zlim" || axis_type == "zliminclude")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8564 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8565 limits = xproperties.get_zlim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8566 update_type = 'z';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8567 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8568 else if (axis_type == "clim" || axis_type == "climinclude")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8569 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8570 limits = xproperties.get_clim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8571 update_type = 'c';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8572 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8573 else if (axis_type == "alim" || axis_type == "aliminclude")
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8574 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8575 limits = xproperties.get_alim ().matrix_value ();
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8576 update_type = 'a';
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8577 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8578
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
8579 if (limits.numel () == 4)
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8580 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8581 val = limits(0);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
8582 if (xfinite (val))
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8583 min_val = val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8584 val = limits(1);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
8585 if (xfinite (val))
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8586 max_val = val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8587 val = limits(2);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
8588 if (xfinite (val))
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8589 min_pos = val;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8590 val = limits(3);
16971
259c1f295a1e Use xfinite to replace some (isinf || isnan) instances in C++ code.
Rik <rik@octave.org>
parents: 16892
diff changeset
8591 if (xfinite (val))
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8592 max_neg = val;
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8593 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8594 else
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8595 {
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
8596 limits.resize (4,1);
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8597 limits(0) = min_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8598 limits(1) = max_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8599 limits(2) = min_pos;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8600 limits(3) = max_neg;
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8601 }
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8602
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8603 get_children_limits (min_val, max_val, min_pos, max_neg, kids, update_type);
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8604
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8605 unwind_protect frame;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8606 frame.protect_var (updating_hggroup_limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8607
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8608 updating_hggroup_limits = true;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8609
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8610 if (limits(0) != min_val || limits(1) != max_val
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8611 || limits(2) != min_pos || limits(3) != max_neg)
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8612 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8613 limits(0) = min_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8614 limits(1) = max_val;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8615 limits(2) = min_pos;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8616 limits(3) = max_neg;
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8617
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8618 switch (update_type)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8619 {
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8620 case 'x':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8621 xproperties.set_xlim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8622 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8623
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8624 case 'y':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8625 xproperties.set_ylim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8626 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8627
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8628 case 'z':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8629 xproperties.set_zlim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8630 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8631
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8632 case 'c':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8633 xproperties.set_clim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8634 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8635
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8636 case 'a':
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8637 xproperties.set_alim (limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8638 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8639
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8640 default:
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8641 break;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8642 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8643
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8644 base_graphics_object::update_axis_limits (axis_type, h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8645 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8646 }
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8647
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8648 void
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8649 hggroup::update_axis_limits (const std::string& axis_type)
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8650 {
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8651 if (updating_hggroup_limits)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8652 return;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8653
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8654 Matrix kids = xproperties.get_children ();
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8655
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8656 double min_val = octave_Inf;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8657 double max_val = -octave_Inf;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8658 double min_pos = octave_Inf;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8659 double max_neg = -octave_Inf;
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8660
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8661 char update_type = 0;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8662
8081
b1634dd9ebe7 Make hggroup to react on [xyzac]liminclude changes in its children.
Michael Goffioul
parents: 8075
diff changeset
8663 if (axis_type == "xlim" || axis_type == "xliminclude")
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8664 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8665 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'x');
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
8666
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8667 update_type = 'x';
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8668 }
8081
b1634dd9ebe7 Make hggroup to react on [xyzac]liminclude changes in its children.
Michael Goffioul
parents: 8075
diff changeset
8669 else if (axis_type == "ylim" || axis_type == "yliminclude")
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8670 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8671 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'y');
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8672
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8673 update_type = 'y';
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8674 }
8081
b1634dd9ebe7 Make hggroup to react on [xyzac]liminclude changes in its children.
Michael Goffioul
parents: 8075
diff changeset
8675 else if (axis_type == "zlim" || axis_type == "zliminclude")
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8676 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8677 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'z');
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8678
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8679 update_type = 'z';
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8680 }
8081
b1634dd9ebe7 Make hggroup to react on [xyzac]liminclude changes in its children.
Michael Goffioul
parents: 8075
diff changeset
8681 else if (axis_type == "clim" || axis_type == "climinclude")
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8682 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8683 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'c');
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8684
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8685 update_type = 'c';
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8686 }
8081
b1634dd9ebe7 Make hggroup to react on [xyzac]liminclude changes in its children.
Michael Goffioul
parents: 8075
diff changeset
8687 else if (axis_type == "alim" || axis_type == "aliminclude")
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8688 {
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8689 get_children_limits (min_val, max_val, min_pos, max_neg, kids, 'a');
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8690
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8691 update_type = 'a';
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8692 }
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8693
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8694 unwind_protect frame;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8695 frame.protect_var (updating_hggroup_limits);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8696
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8697 updating_hggroup_limits = true;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11168
diff changeset
8698
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8699 Matrix limits (1, 4, 0.0);
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8700
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8701 limits(0) = min_val;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8702 limits(1) = max_val;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8703 limits(2) = min_pos;
13132
e3e8ca96f923 Support log scale plots with all negative data.
Ben Abbott <bpabbott@mac.com>
parents: 13130
diff changeset
8704 limits(3) = max_neg;
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8705
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8706 switch (update_type)
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8707 {
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8708 case 'x':
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8709 xproperties.set_xlim (limits);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8710 break;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8711
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8712 case 'y':
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8713 xproperties.set_ylim (limits);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8714 break;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8715
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8716 case 'z':
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8717 xproperties.set_zlim (limits);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8718 break;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8719
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8720 case 'c':
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8721 xproperties.set_clim (limits);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8722 break;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8723
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8724 case 'a':
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8725 xproperties.set_alim (limits);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8726 break;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8727
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8728 default:
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8729 break;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8730 }
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8731
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8732 base_graphics_object::update_axis_limits (axis_type);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8733 }
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8734
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8735 // ---------------------------------------------------------------------
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
8736
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
8737 octave_value
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8738 uicontrol::properties::get_extent (void) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8739 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8740 Matrix m = extent.get ().matrix_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8741
13736
deb69dab4514 Avoid some compilation warnings.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13713
diff changeset
8742 graphics_object parent_obj =
deb69dab4514 Avoid some compilation warnings.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13713
diff changeset
8743 gh_manager::get_object (get_parent ());
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8744 Matrix parent_bbox = parent_obj.get_properties ().get_boundingbox (true),
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8745 parent_size = parent_bbox.extract_n (0, 2, 1, 2);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8746
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8747 return convert_position (m, "pixels", get_units (), parent_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8748 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8749
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8750 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8751 uicontrol::properties::update_text_extent (void)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8752 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8753 #ifdef HAVE_FREETYPE
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8754
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8755 text_element *elt;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8756 ft_render text_renderer;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8757 Matrix box;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8758
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8759 // FIXME: parsed content should be cached for efficiency
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8760 // FIXME: support multiline text
13908
32a77debff75 strip trailing spaces
Konstantinos Poulios <logari81@googlemail.com>
parents: 13897
diff changeset
8761
17269
5b088598df1d Add simple TeX parser based on flex/bison.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17260
diff changeset
8762 elt = text_parser::parse (get_string_string (), "none");
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8763 #ifdef HAVE_FONTCONFIG
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8764 text_renderer.set_font (get_fontname (),
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
8765 get_fontweight (),
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
8766 get_fontangle (),
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
8767 get_fontsize ());
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8768 #endif
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8769 box = text_renderer.get_extent (elt, 0);
17192
755ec7bce733 corefcn/graphics.cc: Fix memory leak in uicontrol::properties::update_text_extent.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 17150
diff changeset
8770 delete elt;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8771
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8772 Matrix ext (1, 4, 0.0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8773
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8774 // FIXME: also handle left and bottom components
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8775
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8776 ext(0) = ext(1) = 1;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8777 ext(2) = box(0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8778 ext(3) = box(1);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8779
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8780 set_extent (ext);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8781
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8782 #endif
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8783 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8784
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8785 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8786 uicontrol::properties::update_units (void)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8787 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8788 Matrix pos = get_position ().matrix_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8789
13736
deb69dab4514 Avoid some compilation warnings.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13713
diff changeset
8790 graphics_object parent_obj = gh_manager::get_object (get_parent ());
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8791 Matrix parent_bbox = parent_obj.get_properties ().get_boundingbox (true),
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8792 parent_size = parent_bbox.extract_n (0, 2, 1, 2);
13908
32a77debff75 strip trailing spaces
Konstantinos Poulios <logari81@googlemail.com>
parents: 13897
diff changeset
8793
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8794 pos = convert_position (pos, cached_units, get_units (), parent_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8795 set_position (pos);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8796
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8797 cached_units = get_units ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8798 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8799
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8800 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8801 uicontrol::properties::set_style (const octave_value& st)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8802 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
8803 if (get___object__ ().is_empty ())
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8804 style = st;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8805 else
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8806 error ("set: cannot change the style of a uicontrol object after creation.");
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8807 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8808
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8809 Matrix
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8810 uicontrol::properties::get_boundingbox (bool,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8811 const Matrix& parent_pix_size) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8812 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8813 Matrix pos = get_position ().matrix_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8814 Matrix parent_size (parent_pix_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8815
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8816 if (parent_size.numel () == 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8817 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8818 graphics_object obj = gh_manager::get_object (get_parent ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8819
17608
e7692efcbd0d graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17607
diff changeset
8820 if (obj.valid_object ())
e7692efcbd0d graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17607
diff changeset
8821 parent_size =
e7692efcbd0d graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17607
diff changeset
8822 obj.get_properties ().get_boundingbox (true).extract_n (0, 2, 1, 2);
e7692efcbd0d graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17607
diff changeset
8823 else
e7692efcbd0d graphics.cc: don't ask for (orphan) dummy axes parent properties.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17607
diff changeset
8824 parent_size = default_figure_position ();
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8825 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8826
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8827 pos = convert_position (pos, get_units (), "pixels", parent_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8828
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8829 pos(0)--;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8830 pos(1)--;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8831 pos(1) = parent_size(1) - pos(1) - pos(3);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8832
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8833 return pos;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8834 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8835
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8836 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8837 uicontrol::properties::set_fontunits (const octave_value& v)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8838 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8839 if (! error_state)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8840 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8841 caseless_str old_fontunits = get_fontunits ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8842 if (fontunits.set (v, true))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8843 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8844 update_fontunits (old_fontunits);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8845 mark_modified ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8846 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8847 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8848 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8849
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8850 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8851 uicontrol::properties::update_fontunits (const caseless_str& old_units)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8852 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8853 caseless_str new_units = get_fontunits ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8854 double parent_height = get_boundingbox (false).elem (3);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8855 double fsz = get_fontsize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8856
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8857 fsz = convert_font_size (fsz, old_units, new_units, parent_height);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8858
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8859 fontsize.set (octave_value (fsz), true);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8860 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8861
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8862 double
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8863 uicontrol::properties::get_fontsize_points (double box_pix_height) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8864 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8865 double fs = get_fontsize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8866 double parent_height = box_pix_height;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8867
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8868 if (fontunits_is ("normalized") && parent_height <= 0)
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
8869 parent_height = get_boundingbox (false).elem (3);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8870
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8871 return convert_font_size (fs, get_fontunits (), "points", parent_height);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8872 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8873
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8874 // ---------------------------------------------------------------------
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8875
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8876 Matrix
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8877 uipanel::properties::get_boundingbox (bool internal,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8878 const Matrix& parent_pix_size) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8879 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8880 Matrix pos = get_position ().matrix_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8881 Matrix parent_size (parent_pix_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8882
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8883 if (parent_size.numel () == 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8884 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8885 graphics_object obj = gh_manager::get_object (get_parent ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8886
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8887 parent_size =
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
8888 obj.get_properties ().get_boundingbox (true).extract_n (0, 2, 1, 2);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8889 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8890
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8891 pos = convert_position (pos, get_units (), "pixels", parent_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8892
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8893 pos(0)--;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8894 pos(1)--;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8895 pos(1) = parent_size(1) - pos(1) - pos(3);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8896
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8897 if (internal)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8898 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8899 double outer_height = pos(3);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8900
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8901 pos(0) = pos(1) = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8902
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8903 if (! bordertype_is ("none"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8904 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8905 double bw = get_borderwidth ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8906 double mul = 1.0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8907
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8908 if (bordertype_is ("etchedin") || bordertype_is ("etchedout"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8909 mul = 2.0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8910
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8911 pos(0) += mul * bw;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8912 pos(1) += mul * bw;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8913 pos(2) -= 2 * mul * bw;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8914 pos(3) -= 2 * mul * bw;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8915 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8916
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8917 if (! get_title ().empty ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8918 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8919 double fs = get_fontsize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8920
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8921 if (! fontunits_is ("pixels"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8922 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8923 double res = xget (0, "screenpixelsperinch").double_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8924
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8925 if (fontunits_is ("points"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8926 fs *= (res / 72.0);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8927 else if (fontunits_is ("inches"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8928 fs *= res;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8929 else if (fontunits_is ("centimeters"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8930 fs *= (res / 2.54);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8931 else if (fontunits_is ("normalized"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8932 fs *= outer_height;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8933 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8934
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8935 if (titleposition_is ("lefttop") || titleposition_is ("centertop")
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8936 || titleposition_is ("righttop"))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8937 pos(1) += (fs / 2);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8938 pos(3) -= (fs / 2);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8939 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8940 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8941
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8942 return pos;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8943 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8944
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8945 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8946 uipanel::properties::set_units (const octave_value& v)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8947 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8948 if (! error_state)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8949 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8950 caseless_str old_units = get_units ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8951 if (units.set (v, true))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8952 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8953 update_units (old_units);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8954 mark_modified ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8955 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8956 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8957 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8958
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8959 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8960 uipanel::properties::update_units (const caseless_str& old_units)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8961 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8962 Matrix pos = get_position ().matrix_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8963
13736
deb69dab4514 Avoid some compilation warnings.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13713
diff changeset
8964 graphics_object parent_obj = gh_manager::get_object (get_parent ());
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8965 Matrix parent_bbox = parent_obj.get_properties ().get_boundingbox (true),
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8966 parent_size = parent_bbox.extract_n (0, 2, 1, 2);
13908
32a77debff75 strip trailing spaces
Konstantinos Poulios <logari81@googlemail.com>
parents: 13897
diff changeset
8967
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8968 pos = convert_position (pos, old_units, get_units (), parent_size);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8969 set_position (pos);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8970 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8971
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8972 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8973 uipanel::properties::set_fontunits (const octave_value& v)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8974 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8975 if (! error_state)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8976 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8977 caseless_str old_fontunits = get_fontunits ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8978 if (fontunits.set (v, true))
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8979 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8980 update_fontunits (old_fontunits);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8981 mark_modified ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8982 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8983 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8984 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8985
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8986 void
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8987 uipanel::properties::update_fontunits (const caseless_str& old_units)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8988 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8989 caseless_str new_units = get_fontunits ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8990 double parent_height = get_boundingbox (false).elem (3);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8991 double fsz = get_fontsize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8992
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8993 fsz = convert_font_size (fsz, old_units, new_units, parent_height);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8994
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8995 set_fontsize (octave_value (fsz));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8996 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8997
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8998 double
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
8999 uipanel::properties::get_fontsize_points (double box_pix_height) const
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9000 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9001 double fs = get_fontsize ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9002 double parent_height = box_pix_height;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9003
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9004 if (fontunits_is ("normalized") && parent_height <= 0)
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
9005 parent_height = get_boundingbox (false).elem (3);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9006
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9007 return convert_font_size (fs, get_fontunits (), "points", parent_height);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9008 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9009
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9010 // ---------------------------------------------------------------------
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9011
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9012 octave_value
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9013 uitoolbar::get_default (const caseless_str& name) const
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9014 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9015 octave_value retval = default_properties.lookup (name);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9016
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9017 if (retval.is_undefined ())
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9018 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9019 graphics_handle parent = get_parent ();
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9020 graphics_object parent_obj = gh_manager::get_object (parent);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9021
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9022 retval = parent_obj.get_default (name);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9023 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9024
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9025 return retval;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9026 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9027
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9028 void
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9029 uitoolbar::reset_default_properties (void)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9030 {
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9031 // empty list of local defaults
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9032 default_properties = property_list ();
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9033
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9034 xreset_default_properties (get_handle (),
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9035 xproperties.factory_defaults ());
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9036 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9037
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9038 // ---------------------------------------------------------------------
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9039
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9040 octave_value
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
9041 base_graphics_object::get_default (const caseless_str& name) const
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9042 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9043 graphics_handle parent = get_parent ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9044 graphics_object parent_obj = gh_manager::get_object (parent);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9045
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9046 return parent_obj.get_default (type () + name);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9047 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9048
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9049 octave_value
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
9050 base_graphics_object::get_factory_default (const caseless_str& name) const
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9051 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9052 graphics_object parent_obj = gh_manager::get_object (0);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9053
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9054 return parent_obj.get_factory_default (type () + name);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9055 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9056
7286
c0c6aa5afff4 [project @ 2007-12-11 16:52:56 by jwe]
jwe
parents: 7283
diff changeset
9057 // We use a random value for the handle to avoid issues with plots and
c0c6aa5afff4 [project @ 2007-12-11 16:52:56 by jwe]
jwe
parents: 7283
diff changeset
9058 // scalar values for the first argument.
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9059 gh_manager::gh_manager (void)
7286
c0c6aa5afff4 [project @ 2007-12-11 16:52:56 by jwe]
jwe
parents: 7283
diff changeset
9060 : handle_map (), handle_free_list (),
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9061 next_handle (-1.0 - (rand () + 1.0) / (RAND_MAX + 2.0)),
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9062 figure_list (), graphics_lock (), event_queue (),
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9063 callback_objects (), event_processing (0)
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9064 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9065 handle_map[0] = graphics_object (new root_figure ());
7847
40b16e04172a Make backend switching work.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7844
diff changeset
9066
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
9067 // Make sure the default graphics toolkit is registered.
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
9068 gtk_manager::default_toolkit ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9069 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9070
13992
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
9071 void
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
9072 gh_manager::create_instance (void)
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
9073 {
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
9074 instance = new gh_manager ();
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
9075
14014
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
9076 if (instance)
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
9077 singleton_cleanup_list::add (cleanup_instance);
13992
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
9078 }
e1f76bfe0452 apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents: 13955
diff changeset
9079
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9080 graphics_handle
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9081 gh_manager::do_make_graphics_handle (const std::string& go_name,
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
9082 const graphics_handle& p,
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
9083 bool integer_figure_handle,
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
9084 bool do_createfcn,
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9085 bool do_notify_toolkit)
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9086 {
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
9087 graphics_handle h = get_handle (integer_figure_handle);
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9088
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9089 base_graphics_object *go = 0;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9090
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
9091 go = make_graphics_object_from_type (go_name, h, p);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
9092
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9093 if (go)
7370
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
9094 {
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
9095 graphics_object obj (go);
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
9096
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
9097 handle_map[h] = obj;
7370
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
9098 if (do_createfcn)
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
9099 go->get_properties ().execute_createfcn ();
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
9100
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
9101 // Notify graphics toolkit.
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9102 if (do_notify_toolkit)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9103 obj.initialize ();
7370
74d64ead0cd7 [project @ 2008-01-14 19:12:45 by jwe]
jwe
parents: 7367
diff changeset
9104 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9105 else
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14325
diff changeset
9106 error ("gh_manager::do_make_graphics_handle: invalid object type '%s'",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9107 go_name.c_str ());
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9108
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9109 return h;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9110 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9111
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9112 graphics_handle
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9113 gh_manager::do_make_figure_handle (double val, bool do_notify_toolkit)
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9114 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9115 graphics_handle h = val;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9116
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
9117 base_graphics_object* go = new figure (h, 0);
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
9118 graphics_object obj (go);
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
9119
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
9120 handle_map[h] = obj;
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
9121
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
9122 // Notify graphics toolkit.
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9123 if (do_notify_toolkit)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9124 obj.initialize ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
9125
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9126 return h;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9127 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9128
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9129 void
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9130 gh_manager::do_push_figure (const graphics_handle& h)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9131 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9132 do_pop_figure (h);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9133
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9134 figure_list.push_front (h);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9135 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9136
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9137 void
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9138 gh_manager::do_pop_figure (const graphics_handle& h)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9139 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9140 for (figure_list_iterator p = figure_list.begin ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9141 p != figure_list.end ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9142 p++)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9143 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9144 if (*p == h)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9145 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9146 figure_list.erase (p);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9147 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9148 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9149 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9150 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9151
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9152 class
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9153 callback_event : public base_graphics_event
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9154 {
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9155 public:
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9156 callback_event (const graphics_handle& h, const std::string& name,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9157 const octave_value& data = Matrix ())
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9158 : base_graphics_event (), handle (h), callback_name (name),
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9159 callback (), callback_data (data) { }
13908
32a77debff75 strip trailing spaces
Konstantinos Poulios <logari81@googlemail.com>
parents: 13897
diff changeset
9160
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9161 callback_event (const graphics_handle& h, const octave_value& cb,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9162 const octave_value& data = Matrix ())
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9163 : base_graphics_event (), handle (h), callback_name (),
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9164 callback (cb), callback_data (data) { }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9165
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9166 void execute (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9167 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9168 if (callback.is_defined ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9169 gh_manager::execute_callback (handle, callback, callback_data);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9170 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9171 gh_manager::execute_callback (handle, callback_name, callback_data);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9172 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9173
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9174 private:
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9175 callback_event (void)
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9176 : base_graphics_event (), handle (), callback_name (), callback_data ()
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9177 { }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9178
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9179 private:
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9180 graphics_handle handle;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9181 std::string callback_name;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9182 octave_value callback;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9183 octave_value callback_data;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9184 };
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9185
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9186 class
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9187 function_event : public base_graphics_event
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9188 {
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9189 public:
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9190 function_event (graphics_event::event_fcn fcn, void* data = 0)
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9191 : base_graphics_event (), function (fcn), function_data (data)
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9192 { }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9193
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9194 void execute (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9195 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9196 function (function_data);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9197 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9198
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9199 private:
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 12164
diff changeset
9200
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9201 graphics_event::event_fcn function;
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9202
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9203 void* function_data;
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9204
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9205 // function_event objects must be created with at least a function.
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9206 function_event (void);
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9207
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9208 // No copying!
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9209
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
9210 function_event (const function_event&);
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
9211
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
9212 function_event & operator = (const function_event&);
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9213 };
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9214
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9215 class
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9216 set_event : public base_graphics_event
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9217 {
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9218 public:
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9219 set_event (const graphics_handle& h, const std::string& name,
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9220 const octave_value& value, bool do_notify_toolkit = true)
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9221 : base_graphics_event (), handle (h), property_name (name),
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17641
diff changeset
9222 property_value (value), notify_toolkit (do_notify_toolkit) { }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9223
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9224 void execute (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9225 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9226 gh_manager::auto_lock guard;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9227
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9228 graphics_object go = gh_manager::get_object (handle);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9229
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9230 if (go)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9231 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9232 property p = go.get_properties ().get_property (property_name);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9233
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9234 if (p.ok ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9235 p.set (property_value, true, notify_toolkit);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9236 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9237 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9238
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9239 private:
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9240 set_event (void)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 12164
diff changeset
9241 : base_graphics_event (), handle (), property_name (), property_value ()
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12159
diff changeset
9242 { }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9243
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9244 private:
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9245 graphics_handle handle;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9246 std::string property_name;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9247 octave_value property_value;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9248 bool notify_toolkit;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9249 };
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9250
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9251 graphics_event
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9252 graphics_event::create_callback_event (const graphics_handle& h,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9253 const std::string& name,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9254 const octave_value& data)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9255 {
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9256 graphics_event e;
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9257
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9258 e.rep = new callback_event (h, name, data);
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9259
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9260 return e;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9261 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9262
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9263 graphics_event
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9264 graphics_event::create_callback_event (const graphics_handle& h,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9265 const octave_value& cb,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9266 const octave_value& data)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9267 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9268 graphics_event e;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9269
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9270 e.rep = new callback_event (h, cb, data);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9271
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9272 return e;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9273 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9274
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9275 graphics_event
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9276 graphics_event::create_function_event (graphics_event::event_fcn fcn,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9277 void *data)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9278 {
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9279 graphics_event e;
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9280
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9281 e.rep = new function_event (fcn, data);
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9282
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9283 return e;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9284 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9285
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9286 graphics_event
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9287 graphics_event::create_set_event (const graphics_handle& h,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9288 const std::string& name,
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9289 const octave_value& data,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9290 bool notify_toolkit)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9291 {
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9292 graphics_event e;
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9293
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9294 e.rep = new set_event (h, name, data, notify_toolkit);
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9295
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9296 return e;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9297 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9298
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9299 static void
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9300 xset_gcbo (const graphics_handle& h)
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9301 {
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9302 graphics_object go = gh_manager::get_object (0);
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9303 root_figure::properties& props =
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9304 dynamic_cast<root_figure::properties&> (go.get_properties ());
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9305
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9306 props.set_callbackobject (h.as_octave_value ());
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9307 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9308
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9309 void
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9310 gh_manager::do_restore_gcbo (void)
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9311 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9312 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9313
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9314 callback_objects.pop_front ();
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9315
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9316 xset_gcbo (callback_objects.empty ()
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9317 ? graphics_handle ()
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9318 : callback_objects.front ().get_handle ());
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9319 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9320
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9321 void
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9322 gh_manager::do_execute_listener (const graphics_handle& h,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9323 const octave_value& l)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9324 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9325 if (octave_thread::is_octave_thread ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9326 gh_manager::execute_callback (h, l, octave_value ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9327 else
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9328 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9329 gh_manager::auto_lock guard;
13908
32a77debff75 strip trailing spaces
Konstantinos Poulios <logari81@googlemail.com>
parents: 13897
diff changeset
9330
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9331 do_post_event (graphics_event::create_callback_event (h, l));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9332 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9333 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9334
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9335 void
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9336 gh_manager::do_execute_callback (const graphics_handle& h,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9337 const octave_value& cb_arg,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9338 const octave_value& data)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9339 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9340 if (cb_arg.is_defined () && ! cb_arg.is_empty ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9341 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9342 octave_value_list args;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9343 octave_function *fcn = 0;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9344
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9345 args(0) = h.as_octave_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9346 if (data.is_defined ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9347 args(1) = data;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9348 else
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9349 args(1) = Matrix ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9350
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9351 unwind_protect_safe frame;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9352 frame.add_fcn (gh_manager::restore_gcbo);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9353
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9354 if (true)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9355 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9356 gh_manager::auto_lock guard;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9357
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9358 callback_objects.push_front (get_object (h));
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9359 xset_gcbo (h);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9360 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9361
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9362 BEGIN_INTERRUPT_WITH_EXCEPTIONS;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9363
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9364 // Copy CB because "function_value" method is non-const.
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9365
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9366 octave_value cb = cb_arg;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9367
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
9368 if (cb.is_function () || cb.is_function_handle ())
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9369 fcn = cb.function_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9370 else if (cb.is_string ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9371 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9372 int status;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9373 std::string s = cb.string_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9374
13940
bf209050014f Use nargout = 0 in graphics callbacks specified as string.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13935
diff changeset
9375 eval_string (s, false, status, 0);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9376 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9377 else if (cb.is_cell () && cb.length () > 0
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9378 && (cb.rows () == 1 || cb.columns () == 1)
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
9379 && (cb.cell_value ()(0).is_function ()
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
9380 || cb.cell_value ()(0).is_function_handle ()))
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9381 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9382 Cell c = cb.cell_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9383
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9384 fcn = c(0).function_value ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9385 if (! error_state)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9386 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9387 for (int i = 1; i < c.length () ; i++)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9388 args(1+i) = c(i);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9389 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9390 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9391 else
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9392 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9393 std::string nm = cb.class_name ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9394 error ("trying to execute non-executable object (class = %s)",
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9395 nm.c_str ());
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9396 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9397
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9398 if (fcn && ! error_state)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9399 feval (fcn, args);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9400
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9401 END_INTERRUPT_WITH_EXCEPTIONS;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9402 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9403 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9404
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9405 void
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9406 gh_manager::do_post_event (const graphics_event& e)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9407 {
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9408 event_queue.push_back (e);
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9409
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9410 command_editor::add_event_hook (gh_manager::process_events);
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9411 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9412
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9413 void
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
9414 gh_manager::do_post_callback (const graphics_handle& h, const std::string& name,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9415 const octave_value& data)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9416 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9417 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9418
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9419 graphics_object go = get_object (h);
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9420
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9421 if (go.valid_object ())
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9422 {
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9423 if (callback_objects.empty ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9424 do_post_event (graphics_event::create_callback_event (h, name, data));
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9425 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9426 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9427 const graphics_object& current = callback_objects.front ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9428
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9429 if (current.get_properties ().is_interruptible ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9430 do_post_event (graphics_event::create_callback_event (h, name,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9431 data));
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9432 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9433 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9434 caseless_str busy_action (go.get_properties ().get_busyaction ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9435
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9436 if (busy_action.compare ("queue"))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9437 do_post_event (graphics_event::create_callback_event (h, name,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9438 data));
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9439 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9440 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9441 caseless_str cname (name);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9442
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9443 if (cname.compare ("deletefcn") || cname.compare ("createfcn")
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9444 || (go.isa ("figure")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9445 && (cname.compare ("closerequestfcn")
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9446 || cname.compare ("resizefcn"))))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9447 do_post_event (
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9448 graphics_event::create_callback_event (h, name, data));
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9449 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9450 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9451 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9452 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9453 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9454
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9455 void
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9456 gh_manager::do_post_function (graphics_event::event_fcn fcn, void* fcn_data)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9457 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9458 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9459
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9460 do_post_event (graphics_event::create_function_event (fcn, fcn_data));
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9461 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9462
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9463 void
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
9464 gh_manager::do_post_set (const graphics_handle& h, const std::string& name,
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9465 const octave_value& value, bool notify_toolkit)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9466 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9467 gh_manager::auto_lock guard;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9468
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9469 do_post_event (graphics_event::create_set_event (h, name, value,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9470 notify_toolkit));
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9471 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9472
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9473 int
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9474 gh_manager::do_process_events (bool force)
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9475 {
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
9476 graphics_event e;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9477 bool old_Vdrawnow_requested = Vdrawnow_requested;
13935
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9478 bool events_executed = false;
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9479
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9480 do
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9481 {
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9482 e = graphics_event ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9483
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9484 gh_manager::lock ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9485
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9486 if (! event_queue.empty ())
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9487 {
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9488 if (callback_objects.empty () || force)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9489 {
13935
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9490 e = event_queue.front ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9491
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9492 event_queue.pop_front ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9493 }
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9494 else
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9495 {
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9496 const graphics_object& go = callback_objects.front ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9497
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9498 if (go.get_properties ().is_interruptible ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9499 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9500 e = event_queue.front ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9501
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9502 event_queue.pop_front ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9503 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9504 }
13935
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9505 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9506
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9507 gh_manager::unlock ();
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9508
13935
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9509 if (e.ok ())
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9510 {
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9511 e.execute ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9512 events_executed = true;
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9513 }
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9514 }
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9515 while (e.ok ());
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9516
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9517 gh_manager::lock ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9518
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9519 if (event_queue.empty () && event_processing == 0)
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9520 command_editor::remove_event_hook (gh_manager::process_events);
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9521
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9522 gh_manager::unlock ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9523
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9524 if (events_executed)
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9525 flush_octave_stdout ();
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9526
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9527 if (Vdrawnow_requested && ! old_Vdrawnow_requested)
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9528 {
15423
53d073233fa4 call more built-in functions directly
John W. Eaton <jwe@octave.org>
parents: 15220
diff changeset
9529 Fdrawnow ();
13935
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9530
e48e8253ce58 Re-allow recursive graphics event processing.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13929
diff changeset
9531 Vdrawnow_requested = false;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9532 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9533
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9534 return 0;
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9535 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9536
13908
32a77debff75 strip trailing spaces
Konstantinos Poulios <logari81@googlemail.com>
parents: 13897
diff changeset
9537 void
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9538 gh_manager::do_enable_event_processing (bool enable)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9539 {
13736
deb69dab4514 Avoid some compilation warnings.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13713
diff changeset
9540 gh_manager::auto_lock guard;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9541
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9542 if (enable)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9543 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9544 event_processing++;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9545
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9546 command_editor::add_event_hook (gh_manager::process_events);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9547 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9548 else
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9549 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9550 event_processing--;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9551
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9552 if (event_queue.empty () && event_processing == 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9553 command_editor::remove_event_hook (gh_manager::process_events);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9554 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9555 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9556
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9557 property_list::plist_map_type
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9558 root_figure::init_factory_properties (void)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9559 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9560 property_list::plist_map_type plist_map;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9561
6844
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
9562 plist_map["figure"] = figure::properties::factory_defaults ();
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
9563 plist_map["axes"] = axes::properties::factory_defaults ();
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
9564 plist_map["line"] = line::properties::factory_defaults ();
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
9565 plist_map["text"] = text::properties::factory_defaults ();
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
9566 plist_map["image"] = image::properties::factory_defaults ();
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
9567 plist_map["patch"] = patch::properties::factory_defaults ();
9ac351b05b51 [project @ 2007-08-30 00:46:23 by jwe]
jwe
parents: 6841
diff changeset
9568 plist_map["surface"] = surface::properties::factory_defaults ();
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
9569 plist_map["hggroup"] = hggroup::properties::factory_defaults ();
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
9570 plist_map["uimenu"] = uimenu::properties::factory_defaults ();
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9571 plist_map["uicontrol"] = uicontrol::properties::factory_defaults ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9572 plist_map["uipanel"] = uipanel::properties::factory_defaults ();
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9573 plist_map["uicontextmenu"] = uicontextmenu::properties::factory_defaults ();
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9574 plist_map["uitoolbar"] = uitoolbar::properties::factory_defaults ();
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9575 plist_map["uipushtool"] = uipushtool::properties::factory_defaults ();
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
9576 plist_map["uitoggletool"] = uitoggletool::properties::factory_defaults ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9577
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9578 return plist_map;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9579 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9580
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9581 // ---------------------------------------------------------------------
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9582
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9583 DEFUN (ishandle, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9584 "-*- texinfo -*-\n\
6678
49724abe1236 [project @ 2007-05-31 19:44:45 by jwe]
jwe
parents: 6595
diff changeset
9585 @deftypefn {Built-in Function} {} ishandle (@var{h})\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9586 Return true if @var{h} is a graphics handle and false otherwise.\n\
17123
bcada0a4f8a7 isaxes.m: New function to determine if object is axes handle.
Rik <rik@octave.org>
parents: 17098
diff changeset
9587 \n\
11431
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 11385
diff changeset
9588 @var{h} may also be a matrix of handles in which case a logical\n\
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 11385
diff changeset
9589 array is returned that is true where the elements of @var{h} are\n\
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 11385
diff changeset
9590 graphics handles and false where they are not.\n\
17123
bcada0a4f8a7 isaxes.m: New function to determine if object is axes handle.
Rik <rik@octave.org>
parents: 17098
diff changeset
9591 @seealso{isaxes, isfigure}\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9592 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9593 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9594 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9595
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9596 octave_value retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9597
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9598 if (args.length () == 1)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9599 retval = is_handle (args(0));
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9600 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9601 print_usage ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9602
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9603 return retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9604 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9605
13327
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9606 static bool
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9607 is_handle_visible (const graphics_handle& h)
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9608 {
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9609 return h.ok () && gh_manager::is_handle_visible (h);
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9610 }
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9611
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9612 static bool
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9613 is_handle_visible (double val)
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9614 {
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9615 return is_handle_visible (gh_manager::lookup (val));
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9616 }
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9617
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9618 static octave_value
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9619 is_handle_visible (const octave_value& val)
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9620 {
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9621 octave_value retval = false;
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9622
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9623 if (val.is_real_scalar () && is_handle_visible (val.double_value ()))
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9624 retval = true;
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9625 else if (val.is_numeric_type () && val.is_real_type ())
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9626 {
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9627 const NDArray handles = val.array_value ();
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9628
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9629 if (! error_state)
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9630 {
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9631 boolNDArray result (handles.dims ());
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9632
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9633 for (octave_idx_type i = 0; i < handles.numel (); i++)
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9634 result.xelem (i) = is_handle_visible (handles (i));
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9635
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9636 retval = result;
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9637 }
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9638 }
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9639
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9640 return retval;
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9641 }
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9642
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9643 DEFUN (__is_handle_visible__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9644 "-*- texinfo -*-\n\
19344
0f9c5a15c8fa doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents: 19279
diff changeset
9645 @deftypefn {Built-in Function} {} __is_handle_visible__ (@var{h})\n\
13327
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9646 Undocumented internal function.\n\
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9647 @end deftypefn")
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9648 {
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9649 octave_value retval;
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9650
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9651 if (args.length () == 1)
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9652 retval = is_handle_visible (args(0));
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9653 else
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9654 print_usage ();
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9655
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9656 return retval;
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9657 }
f81fcceb394c axes: only update the currentaxes property of the parent figure if the axes object is visible
John W. Eaton <jwe@octave.org>
parents: 13324
diff changeset
9658
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9659 DEFUN (reset, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9660 "-*- texinfo -*-\n\
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9661 @deftypefn {Built-in Function} {} reset (@var{h})\n\
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9662 Reset the properties of the graphic object @var{h} to their default values.\n\
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9663 \n\
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9664 For figures, the properties @qcode{\"position\"}, @qcode{\"units\"},\n\
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9665 @qcode{\"windowstyle\"}, and @qcode{\"paperunits\"} are not affected.\n\
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9666 For axes, the properties @qcode{\"position\"} and @qcode{\"units\"} are\n\
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9667 not affected.\n\
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9668 \n\
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9669 The input @var{h} may also be a vector of graphic handles in which case\n\
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9670 each individual object will be reset.\n\
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9671 @seealso{cla, clf, newplot}\n\
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9672 @end deftypefn")
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9673 {
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9674 int nargin = args.length ();
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9675
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9676 if (nargin != 1)
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9677 print_usage ();
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9678 else
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9679 {
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9680 // get vector of graphics handles
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9681 ColumnVector hcv (args(0).vector_value ());
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9682
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9683 if (! error_state)
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9684 {
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9685 // loop over graphics objects
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
9686 for (octave_idx_type n = 0; n < hcv.length (); n++)
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9687 gh_manager::get_object (hcv(n)).reset_default_properties ();
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9688
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9689 if (! error_state)
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9690 Fdrawnow ();
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9691 }
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9692 }
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9693
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9694 return octave_value ();
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9695 }
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
9696
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9697 /*
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9698
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9699 %!test # line object
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9700 %! hf = figure ("visible", "off");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9701 %! unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9702 %! tol = 20 * eps;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9703 %! hax = axes ("defaultlinelinewidth", 3);
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9704 %!
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9705 %! hli = line (1:10, 1:10, 1:10, "marker", "o",
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9706 %! "markerfacecolor", "b", "linestyle", ":");
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9707 %!
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9708 %! reset (hli);
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9709 %! assert (get (hli, "marker"), get (0, "defaultlinemarker"));
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9710 %! assert (get (hli, "markerfacecolor"),
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9711 %! get (0, "defaultlinemarkerfacecolor"));
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9712 %! assert (get (hli, "linestyle"),
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9713 %! get (0, "defaultlinelinestyle"));
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9714 %! assert (get (hli, "linewidth"), 3, tol); # parent axes defaults
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9715 %!
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9716 %! unwind_protect_cleanup
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9717 %! close (hf);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9718 %! end_unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9719
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9720 %!test # patch object
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9721 %! hf = figure ("visible", "off");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9722 %! unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9723 %! tol = 20 * eps;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9724 %! t1 = (1/16:1/8:1)' * 2*pi;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9725 %! t2 = ((1/16:1/16:1)' + 1/32) * 2*pi;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9726 %! x1 = sin (t1) - 0.8;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9727 %! y1 = cos (t1);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9728 %! x2 = sin (t2) + 0.8;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9729 %! y2 = cos (t2);
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9730 %! vert = [x1, y1; x2, y2];
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9731 %! fac = [1:8,NaN(1,8);9:24];
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9732 %! hpa = patch ("Faces",fac, "Vertices",vert, "FaceColor","r");
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9733 %!
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9734 %! reset (hpa);
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9735 %! assert (get (hpa, "faces"), get (0, "defaultpatchfaces"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9736 %! assert (get (hpa, "vertices"), get (0, "defaultpatchvertices"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9737 %! assert (get (hpa, "facevertexcdata"),
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9738 %! get (0, "defaultpatchfacevertexcdata"), tol);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9739 %! unwind_protect_cleanup
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9740 %! close (hf);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9741 %! end_unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9742
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9743 %!test # surface object
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9744 %! hf = figure ("visible", "off");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9745 %! unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9746 %! tol = 20 * eps;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9747 %! hsu = surface (peaks, "edgecolor", "none");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9748 %!
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9749 %! reset (hsu);
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9750 %! assert (get (hsu, "xdata"), get (0, "defaultsurfacexdata"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9751 %! assert (get (hsu, "ydata"), get (0, "defaultsurfaceydata"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9752 %! assert (get (hsu, "zdata"), get (0, "defaultsurfacezdata"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9753 %! assert (get (hsu, "edgecolor"),
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9754 %! get (0, "defaultsurfaceedgecolor"), tol);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9755 %! unwind_protect_cleanup
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9756 %! close (hf);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9757 %! end_unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9758
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9759 %!test # image object
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9760 %! hf = figure ("visible", "off");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9761 %! unwind_protect
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9762 %! tol = 20 * eps;
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9763 %! him = image (rand (10,10), "cdatamapping", "scaled");
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9764 %!
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9765 %! reset (him);
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9766 %! assert (get (him, "cdata"), get (0, "defaultimagecdata"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9767 %! assert (get (him, "cdatamapping"),
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9768 %! get (0, "defaultimagecdatamapping"), tol);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9769 %! unwind_protect_cleanup
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9770 %! close (hf);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9771 %! end_unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9772
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9773 %!test # text object
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9774 %! hf = figure ("visible", "off");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9775 %! unwind_protect
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9776 %! tol = 20 * eps;
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9777 %! hte = text (5, 5, "Hi!", "fontsize", 20 ,"color", "r");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9778 %!
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9779 %! reset (hte);
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9780 %! assert (get (hte, "position"), get (0, "defaulttextposition"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9781 %! assert (get (hte, "fontsize"), get (0, "defaulttextfontsize"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9782 %! assert (get (hte, "color"), get (0, "defaulttextcolor"), tol);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9783 %! unwind_protect_cleanup
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9784 %! close (hf);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9785 %! end_unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9786
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9787 %!test # axes object
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9788 %! hf = figure ("visible", "off");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9789 %! unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9790 %! tol = 20 * eps;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9791 %! pos = get (0, "defaultaxesposition") * .5;
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9792 %! hax = axes ("linewidth", 2, "position", pos);
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9793 %! title ("Reset me, please!");
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9794 %!
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9795 %! reset (hax);
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9796 %! assert (get (hax, "linewidth"), get (0, "defaultaxeslinewidth"), tol);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9797 %! assert (get (hax, "position"), pos, tol); # axes position is unchanged
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9798 %! assert (get (hax, "default"), struct ()); # no more axes' defaults
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9799 %! assert (get (get (hax, "title"), "string"), "");
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9800 %! unwind_protect_cleanup
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9801 %! close (hf);
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9802 %! end_unwind_protect
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9803
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9804 %!test # root figure object
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9805 %! set (0, "defaultfigurevisible", "off");
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9806 %! hf = figure ("visible", "off", "paperunits", "centimeters",
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9807 %! "papertype", "a4");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9808 %! unwind_protect
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9809 %! reset (hf);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9810 %! assert (get (hf, "papertype"), get (0, "defaultfigurepapertype"));
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9811 %! assert (get (hf, "paperunits"), "centimeters"); # paperunits is unchanged
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9812 %! assert (get (hf, "visible"), get (0, "defaultfigurevisible"));
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9813 %! unwind_protect_cleanup
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9814 %! close (hf);
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9815 %! set (0, "defaultfigurevisible", "remove");
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9816 %! end_unwind_protect
19156
a0c514c243f6 maint: Use Octave coding conventions for %!test in graphics.cc.
Rik <rik@octave.org>
parents: 19155
diff changeset
9817
19155
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9818 */
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 19154
diff changeset
9819
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9820 DEFUN (set, args, nargout,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9821 "-*- texinfo -*-\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
9822 @deftypefn {Built-in Function} {} set (@var{h}, @var{property}, @var{value}, @dots{})\n\
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9823 @deftypefnx {Built-in Function} {} set (@var{h}, @var{properties}, @var{values})\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9824 @deftypefnx {Built-in Function} {} set (@var{h}, @var{pv})\n\
18658
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9825 @deftypefnx {Built-in Function} {@var{value_list} =} set (@var{h}, @var{property})\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9826 @deftypefnx {Built-in Function} {@var{all_value_list} =} set (@var{h})\n\
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9827 Set named property values for the graphics handle (or vector of graphics\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9828 handles) @var{h}.\n\
18658
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9829 There are three ways to give the property names and values:\n\
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9830 \n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9831 @itemize\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9832 @item as a comma separated list of @var{property}, @var{value} pairs\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9833 \n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9834 Here, each @var{property} is a string containing the property name, each\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9835 @var{value} is a value of the appropriate type for the property.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
9836 \n\
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9837 @item as a cell array of strings @var{properties} containing property names\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9838 and a cell array @var{values} containing property values.\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9839 \n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9840 In this case, the number of columns of @var{values} must match the number of\n\
10846
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10840
diff changeset
9841 elements in @var{properties}. The first column of @var{values} contains\n\
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10840
diff changeset
9842 values for the first entry in @var{properties}, etc. The number of rows of\n\
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10840
diff changeset
9843 @var{values} must be 1 or match the number of elements of @var{h}. In the\n\
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10840
diff changeset
9844 first case, each handle in @var{h} will be assigned the same values. In the\n\
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10840
diff changeset
9845 latter case, the first handle in @var{h} will be assigned the values from\n\
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10840
diff changeset
9846 the first row of @var{values} and so on.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
9847 \n\
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9848 @item as a structure array @var{pv}\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9849 \n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9850 Here, the field names of @var{pv} represent the property names, and the field\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9851 values give the property values. In contrast to the previous case, all\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9852 elements of @var{pv} will be set in all handles in @var{h} independent of\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9853 the dimensions of @var{pv}.\n\
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9854 @end itemize\n\
18658
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9855 \n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9856 @code{set} is also used to query the list of values a named property will\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9857 take. @code{@var{clist} = set (@var{h}, \"property\")} will return the list\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9858 of possible values for @qcode{\"property\"} in the cell list @var{clist}.\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9859 If no output variable is used then the list is formatted and printed to the\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9860 screen.\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9861 \n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9862 If no property is specified (@code{@var{slist} = set (@var{h})}) then a\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9863 structure @var{slist} is returned where the fieldnames are the properties of\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9864 the object @var{h} and the fields are the list of possible values for each\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9865 property. If no output variable is used then the list is formatted and\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9866 printed to the screen.\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9867 \n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9868 For example,\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9869 \n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9870 @example\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9871 @group\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9872 hf = figure ();\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9873 set (hf, \"paperorientation\")\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9874 @result{} paperorientation: [ landscape | @{portrait@} | rotated ]\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9875 @end group\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9876 @end example\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9877 \n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9878 @noindent\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9879 shows the paperorientation property can take three values with the default\n\
3dac2a233386 doc: Add documentation about using set() to query graphics properties.
Rik <rik@octave.org>
parents: 18567
diff changeset
9880 being @qcode{\"portrait\"}.\n\
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 16750
diff changeset
9881 @seealso{get}\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9882 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9883 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
9884 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
9885
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9886 octave_value retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9887
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9888 int nargin = args.length ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9889
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9890 if (nargin > 0)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9891 {
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9892 // get vector of graphics handles
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9893 ColumnVector hcv (args(0).vector_value ());
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9894
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9895 if (! error_state)
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9896 {
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9897 bool request_drawnow = false;
6733
d6e615183a80 [project @ 2007-06-15 18:21:22 by jwe]
jwe
parents: 6732
diff changeset
9898
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9899 // loop over graphics objects
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
9900 for (octave_idx_type n = 0; n < hcv.length (); n++)
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9901 {
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9902 graphics_object obj = gh_manager::get_object (hcv(n));
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9903
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9904 if (obj)
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9905 {
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9906 if (nargin == 3 && args(1).is_cellstr ()
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9907 && args(2).is_cell ())
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9908 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9909 if (args(2).cell_value ().rows () == 1)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9910 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9911 obj.set (args(1).cellstr_value (),
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9912 args(2).cell_value (), 0);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9913 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9914 else if (hcv.length () == args(2).cell_value ().rows ())
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9915 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9916 obj.set (args(1).cellstr_value (),
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9917 args(2).cell_value (), n);
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9918 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9919 else
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9920 {
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
9921 error ("set: number of graphics handles must match number of value rows (%d != %d)",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9922 hcv.length (), args(2).cell_value ().rows ());
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9923 break;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9924
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9925 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9926 }
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9927 else if (nargin == 2 && args(1).is_map ())
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9928 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9929 obj.set (args(1).map_value ());
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9930 }
18117
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9931 else if (nargin == 2 && args(1).is_string ())
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9932 {
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9933 std::string property = args(1).string_value ();
19794
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19793
diff changeset
9934
18117
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9935 octave_map pmap = obj.values_as_struct ();
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9936
18673
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
9937 if (obj.has_readonly_property (property))
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
9938 if (nargout != 0)
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
9939 retval = Matrix ();
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
9940 else
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
9941 octave_stdout << "set: " << property
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
9942 <<" is read-only" << std::endl;
5264b0ec9f97 Make set() omit read-only properties when called with 1 or 2 arguments (bug #41629).
pantxo <pantxo.diribarne@gmail.com>
parents: 18658
diff changeset
9943 else if (pmap.isfield (property))
18117
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9944 {
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9945 if (nargout != 0)
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9946 retval = pmap.getfield (property)(0);
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9947 else
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9948 {
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9949 std::string s = obj.value_as_string (property);
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9950 if (! error_state)
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9951 octave_stdout << s;
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9952 }
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9953 }
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9954 else
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9955 {
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9956 error ("set: unknown property");
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9957 break;
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9958 }
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18111
diff changeset
9959 }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9960 else if (nargin == 1)
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9961 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9962 if (nargout != 0)
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9963 retval = obj.values_as_struct ();
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9964 else
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9965 {
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9966 std::string s = obj.values_as_string ();
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9967 if (! error_state)
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9968 octave_stdout << s;
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9969 }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10711
diff changeset
9970 }
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9971 else
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9972 {
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9973 obj.set (args.splice (0, 1));
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9974 request_drawnow = true;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9975 }
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9976 }
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9977 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9978 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9979 error ("set: invalid handle (= %g)", hcv(n));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9980 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9981 }
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9982
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9983 if (error_state)
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9984 break;
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9985
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
9986 request_drawnow = true;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
9987 }
6733
d6e615183a80 [project @ 2007-06-15 18:21:22 by jwe]
jwe
parents: 6732
diff changeset
9988
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9989 if (! error_state && request_drawnow)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
9990 Vdrawnow_requested = true;
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9991 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9992 else
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
9993 error ("set: expecting graphics handle as first argument");
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9994 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9995 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9996 print_usage ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9997
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9998 return retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
9999 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10000
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10001 static std::string
18118
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18117
diff changeset
10002 get_graphics_object_type (double val)
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10003 {
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10004 std::string retval;
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10005
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10006 graphics_object obj = gh_manager::get_object (val);
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10007
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10008 if (obj)
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10009 retval = obj.type ();
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10010 else
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10011 error ("get: invalid handle (= %g)", val);
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10012
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10013 return retval;
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10014 }
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10015
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10016 DEFUN (get, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10017 "-*- texinfo -*-\n\
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 16750
diff changeset
10018 @deftypefn {Built-in Function} {@var{val} =} get (@var{h})\n\
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 16750
diff changeset
10019 @deftypefnx {Built-in Function} {@var{val} =} get (@var{h}, @var{p})\n\
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 16750
diff changeset
10020 Return the value of the named property @var{p} from the graphics handle\n\
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 16750
diff changeset
10021 @var{h}. If @var{p} is omitted, return the complete property list for\n\
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 16750
diff changeset
10022 @var{h}. If @var{h} is a vector, return a cell array including the property\n\
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10023 values or lists respectively.\n\
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 16750
diff changeset
10024 @seealso{set}\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10025 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10026 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10027 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10028
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10029 octave_value retval;
8896
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10030
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10031 Cell vals;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10032
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10033 int nargin = args.length ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10034
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10035 bool use_cell_format = false;
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10036
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10037 if (nargin == 1 || nargin == 2)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10038 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
10039 if (args(0).is_empty ())
12678
69cd5ebe5fb5 Stop obscure warnings when get() called with null matrix input (bug #32642)
Rik <octave@nomad.inbox5.com>
parents: 12587
diff changeset
10040 {
69cd5ebe5fb5 Stop obscure warnings when get() called with null matrix input (bug #32642)
Rik <octave@nomad.inbox5.com>
parents: 12587
diff changeset
10041 retval = Matrix ();
69cd5ebe5fb5 Stop obscure warnings when get() called with null matrix input (bug #32642)
Rik <octave@nomad.inbox5.com>
parents: 12587
diff changeset
10042 return retval;
69cd5ebe5fb5 Stop obscure warnings when get() called with null matrix input (bug #32642)
Rik <octave@nomad.inbox5.com>
parents: 12587
diff changeset
10043 }
69cd5ebe5fb5 Stop obscure warnings when get() called with null matrix input (bug #32642)
Rik <octave@nomad.inbox5.com>
parents: 12587
diff changeset
10044
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10045 ColumnVector hcv (args(0).vector_value ());
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10046
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10047 if (! error_state)
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10048 {
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10049 octave_idx_type len = hcv.length ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10050
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10051 if (nargin == 1 && len > 1)
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10052 {
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10053 std::string t0 = get_graphics_object_type (hcv(0));
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10054
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10055 if (! error_state)
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10056 {
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10057 for (octave_idx_type n = 1; n < len; n++)
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10058 {
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10059 std::string t = get_graphics_object_type (hcv(n));
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10060
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10061 if (error_state)
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10062 break;
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10063
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10064 if (t != t0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10065 {
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10066 error ("get: vector of handles must all have same type");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10067 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10068 }
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10069 }
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10070
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10071 }
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10072 }
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10073
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10074 if (! error_state)
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10075 {
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10076 if (nargin > 1 && args(1).is_cellstr ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10077 {
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10078 Array<std::string> plist = args(1).cellstr_value ();
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10079
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10080 if (! error_state)
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10081 {
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10082 octave_idx_type plen = plist.numel ();
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10083
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10084 use_cell_format = true;
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10085
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10086 vals.resize (dim_vector (len, plen));
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10087
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10088 for (octave_idx_type n = 0; ! error_state && n < len; n++)
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10089 {
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10090 graphics_object obj = gh_manager::get_object (hcv(n));
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10091
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10092 if (obj)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10093 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10094 for (octave_idx_type m = 0;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10095 ! error_state && m < plen;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10096 m++)
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10097 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10098 caseless_str property = plist(m);
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10099
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10100 vals(n, m) = obj.get (property);
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10101 }
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10102 }
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10103 else
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10104 {
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10105 error ("get: invalid handle (= %g)", hcv(n));
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10106 break;
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10107 }
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10108 }
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10109 }
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10110 else
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10111 error ("get: expecting property name or cell array of property names as second argument");
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10112 }
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10113 else
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10114 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10115 caseless_str property;
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10116
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10117 if (nargin > 1)
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10118 {
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10119 property = args(1).string_value ();
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10120
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10121 if (error_state)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10122 error ("get: expecting property name or cell array of property names as second argument");
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10123 }
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10124
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10125 vals.resize (dim_vector (len, 1));
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10126
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10127 if (! error_state)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10128 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10129 for (octave_idx_type n = 0; ! error_state && n < len; n++)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10130 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10131 graphics_object obj = gh_manager::get_object (hcv(n));
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10132
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10133 if (obj)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10134 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10135 if (nargin == 1)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10136 vals(n) = obj.get ();
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10137 else
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10138 vals(n) = obj.get (property);
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10139 }
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10140 else
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10141 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10142 error ("get: invalid handle (= %g)", hcv(n));
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10143 break;
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10144 }
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10145 }
13210
d0f9d7353ee5 return get(h) as a struct array when h is a vector of handles
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
10146 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10147 }
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10148 }
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10149 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10150 else
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10151 error ("get: expecting graphics handle as first argument");
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10152 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10153 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10154 print_usage ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10155
6733
d6e615183a80 [project @ 2007-06-15 18:21:22 by jwe]
jwe
parents: 6732
diff changeset
10156 if (! error_state)
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10157 {
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10158 if (use_cell_format)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10159 retval = vals;
11456
fbdb95640852 get: return empty matrix if no values are found
John W. Eaton <jwe@octave.org>
parents: 11455
diff changeset
10160 else
13955
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10161 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10162 octave_idx_type len = vals.numel ();
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10163
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10164 if (len == 0)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10165 retval = Matrix ();
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10166 else if (len == 1)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10167 retval = vals(0);
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10168 else if (len > 1 && nargin == 1)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10169 {
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10170 OCTAVE_LOCAL_BUFFER (octave_scalar_map, tmp, len);
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10171
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10172 for (octave_idx_type n = 0; n < len; n++)
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10173 tmp[n] = vals(n).scalar_map_value ();
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10174
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10175 retval = octave_map::cat (0, len, tmp);
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10176 }
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10177 else
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10178 retval = vals;
ffbbe6719ef5 Implement support for cellstr argument in get() function.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13940
diff changeset
10179 }
6732
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10180 }
4ba39e63b005 [project @ 2007-06-15 18:07:29 by jwe]
jwe
parents: 6727
diff changeset
10181
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10182 return retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10183 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10184
11456
fbdb95640852 get: return empty matrix if no values are found
John W. Eaton <jwe@octave.org>
parents: 11455
diff changeset
10185 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14413
diff changeset
10186 %!assert (get (findobj (0, "Tag", "nonexistenttag"), "nonexistentproperty"), [])
11456
fbdb95640852 get: return empty matrix if no values are found
John W. Eaton <jwe@octave.org>
parents: 11455
diff changeset
10187 */
fbdb95640852 get: return empty matrix if no values are found
John W. Eaton <jwe@octave.org>
parents: 11455
diff changeset
10188
8812
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8740
diff changeset
10189 // Return all properties from the graphics handle @var{h}.
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8740
diff changeset
10190 // If @var{h} is a vector, return a cell array including the
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8740
diff changeset
10191 // property values or lists respectively.
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8740
diff changeset
10192
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10193 DEFUN (__get__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10194 "-*- texinfo -*-\n\
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10195 @deftypefn {Built-in Function} {} __get__ (@var{h})\n\
8812
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8740
diff changeset
10196 Undocumented internal function.\n\
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10197 @end deftypefn")
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10198 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10199 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10200
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10201 octave_value retval;
8896
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10202
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10203 Cell vals;
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10204
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10205 int nargin = args.length ();
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10206
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10207 if (nargin == 1)
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10208 {
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10209 ColumnVector hcv (args(0).vector_value ());
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10210
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10211 if (! error_state)
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10212 {
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10213 octave_idx_type len = hcv.length ();
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10214
8896
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10215 vals.resize (dim_vector (len, 1));
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10216
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10217 for (octave_idx_type n = 0; n < len; n++)
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10218 {
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10219 graphics_object obj = gh_manager::get_object (hcv(n));
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10220
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10221 if (obj)
8896
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10222 vals(n) = obj.get (true);
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10223 else
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10224 {
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10225 error ("get: invalid handle (= %g)", hcv(n));
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10226 break;
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10227 }
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10228 }
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10229 }
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10230 else
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10231 error ("get: expecting graphics handle as first argument");
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10232 }
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10233 else
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10234 print_usage ();
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10235
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10236 if (! error_state)
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10237 {
8896
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10238 octave_idx_type len = vals.numel ();
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10239
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10240 if (len > 1)
8896
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10241 retval = vals;
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10242 else if (len == 1)
8896
f155e9d1f086 graphics.cc (Fget, F__get__): return column vector, not row vector
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
10243 retval = vals(0);
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10244 }
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10245
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10246 return retval;
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10247 }
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7378
diff changeset
10248
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10249 static octave_value
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10250 make_graphics_object (const std::string& go_name,
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10251 bool integer_figure_handle,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10252 const octave_value_list& args)
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10253 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10254 octave_value retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10255
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10256 double val = octave_NaN;
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10257
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10258 octave_value_list xargs = args.splice (0, 1);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10259
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10260 caseless_str p ("parent");
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10261
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10262 for (int i = 0; i < xargs.length (); i++)
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10263 if (xargs(i).is_string ()
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10264 && p.compare (xargs(i).string_value ()))
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10265 {
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10266 if (i < (xargs.length () - 1))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10267 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10268 val = xargs(i+1).double_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10269
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10270 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10271 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10272 xargs = xargs.splice (i, 2);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10273 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10274 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10275 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10276 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10277 error ("__go_%s__: missing value for parent property",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10278 go_name.c_str ());
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10279 }
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10280
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10281 if (! error_state && xisnan (val))
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10282 val = args(0).double_value ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10283
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10284 if (! error_state)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10285 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10286 graphics_handle parent = gh_manager::lookup (val);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10287
7056
2002804df782 [project @ 2007-10-24 00:32:44 by jwe]
jwe
parents: 7030
diff changeset
10288 if (parent.ok ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10289 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10290 graphics_handle h
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10291 = gh_manager::make_graphics_handle (go_name, parent,
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10292 integer_figure_handle,
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10293 false, false);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10294
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10295 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10296 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10297 adopt (parent, h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10298
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10299 xset (h, xargs);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10300 xcreatefcn (h);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10301 xinitialize (h);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10302
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10303 retval = h.value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10304
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10305 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10306 Vdrawnow_requested = true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10307 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10308 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10309 error ("__go%s__: unable to create graphics handle",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10310 go_name.c_str ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10311 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10312 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10313 error ("__go_%s__: invalid parent", go_name.c_str ());
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10314 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10315 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10316 error ("__go_%s__: invalid parent", go_name.c_str ());
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10317
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10318 return retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10319 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10320
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10321 DEFUN (__go_figure__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10322 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10323 @deftypefn {Built-in Function} {} __go_figure__ (@var{fignum})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10324 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10325 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10326 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10327 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10328
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10329 octave_value retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10330
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10331 if (args.length () > 0)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10332 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10333 double val = args(0).double_value ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10334
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10335 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10336 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10337 if (is_figure (val))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10338 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10339 graphics_handle h = gh_manager::lookup (val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10340
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10341 xset (h, args.splice (0, 1));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10342
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10343 retval = h.value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10344 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10345 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10346 {
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10347 bool int_fig_handle = true;
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10348
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10349 octave_value_list xargs = args.splice (0, 1);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10350
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10351 graphics_handle h = octave_NaN;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10352
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10353 if (xisnan (val))
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10354 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10355 caseless_str p ("integerhandle");
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10356
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10357 for (int i = 0; i < xargs.length (); i++)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10358 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10359 if (xargs(i).is_string ()
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10360 && p.compare (xargs(i).string_value ()))
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10361 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10362 if (i < (xargs.length () - 1))
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10363 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10364 std::string pval = xargs(i+1).string_value ();
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10365
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10366 if (! error_state)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10367 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10368 caseless_str on ("on");
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10369 int_fig_handle = on.compare (pval);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10370 xargs = xargs.splice (i, 2);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10371 break;
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10372 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10373 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10374 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10375 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10376
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10377 h = gh_manager::make_graphics_handle ("figure", 0,
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10378 int_fig_handle,
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10379 false, false);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10380
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10381 if (! int_fig_handle)
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10382 {
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10383 // We need to intiailize the integerhandle
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10384 // property without calling the set_integerhandle
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10385 // method, because doing that will generate a new
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10386 // handle value...
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10387
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10388 graphics_object go = gh_manager::get_object (h);
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10389 go.get_properties ().init_integerhandle ("off");
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10390 }
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10391 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10392 else if (val > 0 && D_NINT (val) == val)
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10393 h = gh_manager::make_figure_handle (val, false);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10394
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10395 if (! error_state && h.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10396 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10397 adopt (0, h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10398
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10399 gh_manager::push_figure (h);
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10400
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13804
diff changeset
10401 xset (h, xargs);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10402 xcreatefcn (h);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10403 xinitialize (h);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10404
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10405 retval = h.value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10406 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10407 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10408 error ("__go_figure__: failed to create figure handle");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10409 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10410 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10411 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10412 error ("__go_figure__: expecting figure number to be double value");
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10413 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10414 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10415 print_usage ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10416
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10417 return retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10418 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10419
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10420 #define GO_BODY(TYPE) \
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10421 gh_manager::auto_lock guard; \
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10422 \
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10423 octave_value retval; \
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10424 \
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10425 if (args.length () > 0) \
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10426 retval = make_graphics_object (#TYPE, false, args); \
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10427 else \
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10428 print_usage (); \
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10429 \
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10430 return retval
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10431
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10432 int
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10433 calc_dimensions (const graphics_object& go)
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10434 {
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10435
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10436 int nd = 2;
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10437
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10438 if (go.isa ("surface"))
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10439 nd = 3;
17564
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10440 else if ((go.isa ("line") || go.isa ("patch"))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10441 && ! go.get ("zdata").is_empty ())
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10442 nd = 3;
17564
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10443 else
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10444 {
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10445 Matrix kids = go.get_properties ().get_children ();
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10446
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10447 for (octave_idx_type i = 0; i < kids.length (); i++)
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10448 {
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10449 graphics_handle hnd = gh_manager::lookup (kids(i));
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10450
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10451 if (hnd.ok ())
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10452 {
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10453 const graphics_object& kid = gh_manager::get_object (hnd);
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10454
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10455 if (kid.valid_object ())
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10456 nd = calc_dimensions (kid);
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10457
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10458 if (nd == 3)
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10459 break;
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10460 }
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10461 }
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10462 }
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10463
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10464 return nd;
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10465 }
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10466
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10467 DEFUN (__calc_dimensions__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10468 "-*- texinfo -*-\n\
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10469 @deftypefn {Built-in Function} {} __calc_dimensions__ (@var{axes})\n\
11572
7d6d8c1e471f Grammarcheck Texinfo for files in src directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
10470 Internal function. Determine the number of dimensions in a graphics\n\
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10471 object, whether 2 or 3.\n\
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10472 @end deftypefn")
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10473 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10474 gh_manager::auto_lock guard;
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10475
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10476 octave_value retval;
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10477
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10478 int nargin = args.length ();
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10479
18961
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10480 if (nargin == 1)
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10481 {
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10482 double h = args(0).double_value ();
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10483 if (! error_state)
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10484 retval = calc_dimensions (gh_manager::get_object (h));
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10485 else
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10486 error ("__calc_dimensions__: expecting graphics handle as only argument");
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10487 }
5e99fd6ea758 graphics.cc: fix segfault in __calc_dimensions__ when args is empty
Andreas Weber <andy.weber.aw@gmail.com>
parents: 17861
diff changeset
10488 else
17564
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10489 print_usage ();
234731d524c2 axis.m: Fix 'axis tight' with pcolor plots.
Rik <rik@octave.org>
parents: 17544
diff changeset
10490
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10491 return retval;
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10492 }
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10846
diff changeset
10493
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10494 DEFUN (__go_axes__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10495 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10496 @deftypefn {Built-in Function} {} __go_axes__ (@var{parent})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10497 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10498 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10499 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10500 GO_BODY (axes);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10501 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10502
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10503 DEFUN (__go_line__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10504 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10505 @deftypefn {Built-in Function} {} __go_line__ (@var{parent})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10506 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10507 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10508 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10509 GO_BODY (line);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10510 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10511
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10512 DEFUN (__go_text__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10513 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10514 @deftypefn {Built-in Function} {} __go_text__ (@var{parent})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10515 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10516 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10517 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10518 GO_BODY (text);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10519 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10520
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10521 DEFUN (__go_image__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10522 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10523 @deftypefn {Built-in Function} {} __go_image__ (@var{parent})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10524 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10525 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10526 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10527 GO_BODY (image);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10528 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10529
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10530 DEFUN (__go_surface__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10531 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10532 @deftypefn {Built-in Function} {} __go_surface__ (@var{parent})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10533 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10534 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10535 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10536 GO_BODY (surface);
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10537 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10538
6807
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
10539 DEFUN (__go_patch__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10540 "-*- texinfo -*-\n\
6807
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
10541 @deftypefn {Built-in Function} {} __go_patch__ (@var{parent})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10542 Undocumented internal function.\n\
6807
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
10543 @end deftypefn")
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
10544 {
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
10545 GO_BODY (patch);
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
10546 }
0089a504fdd6 [project @ 2007-08-10 17:34:59 by jwe]
jwe
parents: 6790
diff changeset
10547
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10548 DEFUN (__go_hggroup__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10549 "-*- texinfo -*-\n\
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10550 @deftypefn {Built-in Function} {} __go_hggroup__ (@var{parent})\n\
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10551 Undocumented internal function.\n\
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10552 @end deftypefn")
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10553 {
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10554 GO_BODY (hggroup);
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10555 }
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
10556
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10557 DEFUN (__go_uimenu__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10558 "-*- texinfo -*-\n\
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10559 @deftypefn {Built-in Function} {} __go_uimenu__ (@var{parent})\n\
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10560 Undocumented internal function.\n\
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10561 @end deftypefn")
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10562 {
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10563 GO_BODY (uimenu);
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10564 }
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11076
diff changeset
10565
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10566 DEFUN (__go_uicontrol__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10567 "-*- texinfo -*-\n\
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10568 @deftypefn {Built-in Function} {} __go_uicontrol__ (@var{parent})\n\
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10569 Undocumented internal function.\n\
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10570 @end deftypefn")
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10571 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10572 GO_BODY (uicontrol);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10573 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10574
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10575 DEFUN (__go_uipanel__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10576 "-*- texinfo -*-\n\
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10577 @deftypefn {Built-in Function} {} __go_uipanel__ (@var{parent})\n\
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10578 Undocumented internal function.\n\
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10579 @end deftypefn")
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10580 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10581 GO_BODY (uipanel);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10582 }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10583
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10584 DEFUN (__go_uicontextmenu__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10585 "-*- texinfo -*-\n\
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10586 @deftypefn {Built-in Function} {} __go_uicontextmenu__ (@var{parent})\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10587 Undocumented internal function.\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10588 @end deftypefn")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10589 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10590 GO_BODY (uicontextmenu);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10591 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10592
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10593 DEFUN (__go_uitoolbar__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10594 "-*- texinfo -*-\n\
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10595 @deftypefn {Built-in Function} {} __go_uitoolbar__ (@var{parent})\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10596 Undocumented internal function.\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10597 @end deftypefn")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10598 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10599 GO_BODY (uitoolbar);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10600 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10601
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10602 DEFUN (__go_uipushtool__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10603 "-*- texinfo -*-\n\
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10604 @deftypefn {Built-in Function} {} __go_uipushtool__ (@var{parent})\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10605 Undocumented internal function.\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10606 @end deftypefn")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10607 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10608 GO_BODY (uipushtool);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10609 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10610
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10611 DEFUN (__go_uitoggletool__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10612 "-*- texinfo -*-\n\
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10613 @deftypefn {Built-in Function} {} __go_uitoggletool__ (@var{parent})\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10614 Undocumented internal function.\n\
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10615 @end deftypefn")
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10616 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10617 GO_BODY (uitoggletool);
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10618 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13327
diff changeset
10619
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10620 DEFUN (__go_delete__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10621 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10622 @deftypefn {Built-in Function} {} __go_delete__ (@var{h})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10623 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10624 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10625 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10626 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10627
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10628 octave_value_list retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10629
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10630 if (args.length () == 1)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10631 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10632 graphics_handle h = octave_NaN;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10633
18111
b560bac0fca2 maint: Don't use space between 'args' and '(' when doing indexing.
Rik <rik@octave.org>
parents: 18099
diff changeset
10634 const NDArray vals = args(0).array_value ();
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10635
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10636 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10637 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10638 // Check is all the handles to delete are valid first
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10639 // as callbacks might delete one of the handles we
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10640 // later want to delete
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10641 for (octave_idx_type i = 0; i < vals.numel (); i++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10642 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10643 h = gh_manager::lookup (vals.elem (i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10644
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10645 if (! h.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10646 {
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
10647 error ("delete: invalid graphics object (= %g)",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10648 vals.elem (i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10649 break;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10650 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10651 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10652
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10653 if (! error_state)
14014
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 14006
diff changeset
10654 delete_graphics_objects (vals);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10655 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10656 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10657 error ("delete: invalid graphics object");
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10658 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10659 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10660 print_usage ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10661
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10662 return retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10663 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10664
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10665 DEFUN (__go_axes_init__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10666 "-*- texinfo -*-\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10667 @deftypefn {Built-in Function} {} __go_axes_init__ (@var{h}, @var{mode})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10668 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10669 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10670 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10671 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10672
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10673 octave_value retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10674
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10675 int nargin = args.length ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10676
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10677 std::string mode = "";
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10678
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10679 if (nargin == 2)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10680 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10681 mode = args(1).string_value ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10682
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10683 if (error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10684 return retval;
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10685 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10686
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10687 if (nargin == 1 || nargin == 2)
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10688 {
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10689 graphics_handle h = octave_NaN;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10690
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10691 double val = args(0).double_value ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10692
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10693 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10694 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10695 h = gh_manager::lookup (val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10696
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10697 if (h.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10698 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10699 graphics_object obj = gh_manager::get_object (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10700
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10701 obj.set_defaults (mode);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10702
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10703 h = gh_manager::lookup (val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10704 if (! h.ok ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10705 error ("__go_axes_init__: axis deleted during initialization (= %g)",
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10706 val);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10707 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10708 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10709 error ("__go_axes_init__: invalid graphics object (= %g)", val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10710 }
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10711 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10712 error ("__go_axes_init__: invalid graphics object");
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10713 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10714 else
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10715 print_usage ();
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10716
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10717 return retval;
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10718 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10719
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10720 DEFUN (__go_handles__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10721 "-*- texinfo -*-\n\
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10722 @deftypefn {Built-in Function} {} __go_handles__ (@var{show_hidden})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10723 Undocumented internal function.\n\
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10724 @end deftypefn")
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10725 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10726 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10727
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10728 bool show_hidden = false;
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10729
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10730 if (args.length () > 0)
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10731 show_hidden = args(0).bool_value ();
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10732
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10733 return octave_value (gh_manager::handle_list (show_hidden));
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10734 }
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10735
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10736 DEFUN (__go_figure_handles__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10737 "-*- texinfo -*-\n\
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10738 @deftypefn {Built-in Function} {} __go_figure_handles__ (@var{show_hidden})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
10739 Undocumented internal function.\n\
6425
0cc5ca7b1e91 [project @ 2007-03-21 15:57:19 by jwe]
jwe
parents: 6424
diff changeset
10740 @end deftypefn")
0cc5ca7b1e91 [project @ 2007-03-21 15:57:19 by jwe]
jwe
parents: 6424
diff changeset
10741 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10742 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10743
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10744 bool show_hidden = false;
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10745
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10746 if (args.length () > 0)
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10747 show_hidden = args(0).bool_value ();
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10748
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
10749 return octave_value (gh_manager::figure_handle_list (show_hidden));
6406
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10750 }
f7c06f96bd18 [project @ 2007-03-14 18:26:00 by jwe]
jwe
parents:
diff changeset
10751
7967
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10752 DEFUN (__go_execute_callback__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10753 "-*- texinfo -*-\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
10754 @deftypefn {Built-in Function} {} __go_execute_callback__ (@var{h}, @var{name})\n\
7967
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10755 @deftypefnx {Built-in Function} {} __go_execute_callback__ (@var{h}, @var{name}, @var{param})\n\
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10756 Undocumented internal function.\n\
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10757 @end deftypefn")
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10758 {
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10759 octave_value retval;
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10760
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10761 int nargin = args.length ();
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10762
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10763 if (nargin == 2 || nargin == 3)
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10764 {
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10765 double val = args(0).double_value ();
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10766
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10767 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10768 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10769 graphics_handle h = gh_manager::lookup (val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10770
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10771 if (h.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10772 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10773 std::string name = args(1).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10774
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10775 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10776 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10777 if (nargin == 2)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10778 gh_manager::execute_callback (h, name);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10779 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10780 gh_manager::execute_callback (h, name, args(2));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10781 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10782 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10783 error ("__go_execute_callback__: invalid callback name");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10784 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10785 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10786 error ("__go_execute_callback__: invalid graphics object (= %g)",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10787 val);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10788 }
7967
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10789 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
10790 error ("__go_execute_callback__: invalid graphics object");
7967
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10791 }
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10792 else
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10793 print_usage ();
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10794
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10795 return retval;
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10796 }
6add0f974aee Add __go_execute_callback__
John W. Eaton <jwe@octave.org>
parents: 7964
diff changeset
10797
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10798 DEFUN (__image_pixel_size__, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10799 "-*- texinfo -*-\n\
11572
7d6d8c1e471f Grammarcheck Texinfo for files in src directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
10800 @deftypefn {Built-in Function} {@var{px}, @var{py}} __image_pixel_size__ (@var{h})\n\
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10801 Internal function: returns the pixel size of the image in normalized units.\n\
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10802 @end deftypefn")
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10803 {
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10804 octave_value retval;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10805
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10806 int nargin = args.length ();
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10807
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10808 if (nargin == 1)
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10809 {
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10810 double h = args(0).double_value ();
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10811
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10812 if (! error_state)
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10813 {
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10814 graphics_object fobj = gh_manager::get_object (h);
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10815 if (fobj && fobj.isa ("image"))
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10816 {
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10817 image::properties& ip =
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10818 dynamic_cast<image::properties&> (fobj.get_properties ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
10819
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10820 Matrix dp = Matrix (1, 2, 0);
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10821 dp(0, 0) = ip.pixel_xsize ();
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10822 dp(0, 1) = ip.pixel_ysize ();
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10823 retval = dp;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10824 }
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10825 else
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10826 error ("__image_pixel_size__: object is not an image");
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10827 }
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10828 else
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10829 error ("__image_pixel_size__: argument is not a handle");
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10830 }
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10831 else
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10832 print_usage ();
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10833
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10834 return retval;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10835 }
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11074
diff changeset
10836
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10837 gtk_manager *gtk_manager::instance = 0;
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10838
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10839 void
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10840 gtk_manager::create_instance (void)
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10841 {
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10842 instance = new gtk_manager ();
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10843
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10844 if (instance)
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10845 singleton_cleanup_list::add (cleanup_instance);
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10846 }
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10847
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10848 graphics_toolkit
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10849 gtk_manager::do_get_toolkit (void) const
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10850 {
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10851 graphics_toolkit retval;
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10852
19843
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10853 if (! dtk.empty ())
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10854 {
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10855 const_loaded_toolkits_iterator pl = loaded_toolkits.find (dtk);
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10856
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10857 if (pl == loaded_toolkits.end ())
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10858 {
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10859 const_available_toolkits_iterator pa = available_toolkits.find (dtk);
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10860
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10861 if (pa != available_toolkits.end ())
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10862 {
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10863 octave_value_list args;
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10864 args(0) = dtk;
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10865 feval ("graphics_toolkit", args);
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10866
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10867 if (! error_state)
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10868 pl = loaded_toolkits.find (dtk);
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10869
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10870 if (error_state || pl == loaded_toolkits.end ())
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10871 error ("failed to load %s graphics toolkit", dtk.c_str ());
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10872 else
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10873 retval = pl->second;
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10874 }
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10875 else
19843
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10876 error ("default graphics toolkit '%s' is not available!",
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10877 dtk.c_str ());
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10878 }
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10879 else
19843
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10880 retval = pl->second;
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10881 }
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10882 else
408361a8c72f Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents: 19794
diff changeset
10883 error ("no graphics toolkits are available!");
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10884
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10885 return retval;
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10886 }
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10887
19792
be7ac98fab43 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19791
diff changeset
10888 void
18653
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10889 gtk_manager::do_register_toolkit (const std::string& name)
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10890 {
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10891 if (dtk.empty () || name == "qt"
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10892 || (name == "fltk"
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10893 && available_toolkits.find ("qt") == available_toolkits.end ()))
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10894 dtk = name;
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10895
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10896 available_toolkits.insert (name);
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10897 }
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10898
19792
be7ac98fab43 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19791
diff changeset
10899 void
18653
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10900 gtk_manager::do_unregister_toolkit (const std::string& name)
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10901 {
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10902 available_toolkits.erase (name);
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10903
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10904 if (dtk == name)
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10905 {
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10906 if (available_toolkits.empty ())
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10907 dtk.clear ();
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10908 else
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10909 {
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10910 const_available_toolkits_iterator pa = available_toolkits.begin ();
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10911
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10912 dtk = *pa++;
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10913
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10914 while (pa != available_toolkits.end ())
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10915 {
18835
ee7b23a48947 Clean up a few compiler warnings.
Rik <rik@octave.org>
parents: 18832
diff changeset
10916 std::string tk_name = *pa++;
ee7b23a48947 Clean up a few compiler warnings.
Rik <rik@octave.org>
parents: 18832
diff changeset
10917
ee7b23a48947 Clean up a few compiler warnings.
Rik <rik@octave.org>
parents: 18832
diff changeset
10918 if (tk_name == "qt"
ee7b23a48947 Clean up a few compiler warnings.
Rik <rik@octave.org>
parents: 18832
diff changeset
10919 || (tk_name == "fltk"
19572
9ef286208da1 maint: Periodic merge of gui-release to default.
John W. Eaton <jwe@octave.org>
parents: 19513 19569
diff changeset
10920 && (available_toolkits.find ("qt")
9ef286208da1 maint: Periodic merge of gui-release to default.
John W. Eaton <jwe@octave.org>
parents: 19513 19569
diff changeset
10921 == available_toolkits.end ())))
18835
ee7b23a48947 Clean up a few compiler warnings.
Rik <rik@octave.org>
parents: 18832
diff changeset
10922 dtk = tk_name;
18653
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10923 }
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10924 }
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10925 }
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10926 }
ca1648b2e673 set default toolkit when registering toolkits (bug #41665).
Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
parents: 18566
diff changeset
10927
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
10928 DEFUN (available_graphics_toolkits, , ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10929 "-*- texinfo -*-\n\
12215
4ae2a74ed04c Add fltk_gui_mode, fltk_mouse_wheel_zoom to documentation.
Rik <octave@nomad.inbox5.com>
parents: 12189
diff changeset
10930 @deftypefn {Built-in Function} {} available_graphics_toolkits ()\n\
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
10931 Return a cell array of registered graphics toolkits.\n\
14134
84f38aeb9f0e doc: Add register_graphics_toolkit() and loaded_graphics_toolkits() to documentation
Rik <octave@nomad.inbox5.com>
parents: 14062
diff changeset
10932 @seealso{graphics_toolkit, register_graphics_toolkit}\n\
7835
ca8b97bb952c added the function available_backends
Shai Ayal <shaiay@sourceforge.net>
parents: 7833
diff changeset
10933 @end deftypefn")
ca8b97bb952c added the function available_backends
Shai Ayal <shaiay@sourceforge.net>
parents: 7833
diff changeset
10934 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
10935 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10936
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10937 return octave_value (gtk_manager::available_toolkits_list ());
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10938 }
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10939
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10940 DEFUN (register_graphics_toolkit, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10941 "-*- texinfo -*-\n\
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10942 @deftypefn {Built-in Function} {} register_graphics_toolkit (@var{toolkit})\n\
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10943 List @var{toolkit} as an available graphics toolkit.\n\
14134
84f38aeb9f0e doc: Add register_graphics_toolkit() and loaded_graphics_toolkits() to documentation
Rik <octave@nomad.inbox5.com>
parents: 14062
diff changeset
10944 @seealso{available_graphics_toolkits}\n\
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10945 @end deftypefn")
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10946 {
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10947 octave_value retval;
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10948
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10949 gh_manager::auto_lock guard;
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10950
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10951 if (args.length () == 1)
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10952 {
19600
03067dab10ca Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents: 19572
diff changeset
10953 if (args(0).is_string ())
03067dab10ca Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents: 19572
diff changeset
10954 {
03067dab10ca Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents: 19572
diff changeset
10955 std::string name = args(0).string_value ();
03067dab10ca Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents: 19572
diff changeset
10956 gtk_manager::register_toolkit (name);
03067dab10ca Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents: 19572
diff changeset
10957 }
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10958 else
19600
03067dab10ca Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents: 19572
diff changeset
10959 error ("register_graphics_toolkit: TOOLKIT must be a string");
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10960 }
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10961 else
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10962 print_usage ();
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10963
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10964 return retval;
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10965 }
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10966
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10967 DEFUN (loaded_graphics_toolkits, , ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10968 "-*- texinfo -*-\n\
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10969 @deftypefn {Built-in Function} {} loaded_graphics_toolkits ()\n\
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10970 Return a cell array of the currently loaded graphics toolkits.\n\
14134
84f38aeb9f0e doc: Add register_graphics_toolkit() and loaded_graphics_toolkits() to documentation
Rik <octave@nomad.inbox5.com>
parents: 14062
diff changeset
10971 @seealso{available_graphics_toolkits}\n\
14021
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10972 @end deftypefn")
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10973 {
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10974 gh_manager::auto_lock guard;
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10975
e3bed294b117 refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents: 14016
diff changeset
10976 return octave_value (gtk_manager::loaded_toolkits_list ());
7835
ca8b97bb952c added the function available_backends
Shai Ayal <shaiay@sourceforge.net>
parents: 7833
diff changeset
10977 }
ca8b97bb952c added the function available_backends
Shai Ayal <shaiay@sourceforge.net>
parents: 7833
diff changeset
10978
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
10979 DEFUN (drawnow, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
10980 "-*- texinfo -*-\n\
9316
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10981 @deftypefn {Built-in Function} {} drawnow ()\n\
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10982 @deftypefnx {Built-in Function} {} drawnow (\"expose\")\n\
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10983 @deftypefnx {Built-in Function} {} drawnow (@var{term}, @var{file}, @var{mono}, @var{debug_file})\n\
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10984 Update figure windows and their children. The event queue is flushed and\n\
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10985 any callbacks generated are executed. With the optional argument\n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17269
diff changeset
10986 @qcode{\"expose\"}, only graphic objects are updated and no other events or\n\
9316
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10987 callbacks are processed.\n\
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10988 The third calling form of @code{drawnow} is for debugging and is\n\
c539ec5726e7 Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents: 9311
diff changeset
10989 undocumented.\n\
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
10990 @end deftypefn")
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
10991 {
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
10992 static int drawnow_executing = 0;
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
10993
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
10994 octave_value retval;
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
10995
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10996 gh_manager::lock ();
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
10997
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
10998 unwind_protect frame;
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
10999 frame.protect_var (Vdrawnow_requested, false);
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
11000
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 10056
diff changeset
11001 frame.protect_var (drawnow_executing);
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
11002
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
11003 if (++drawnow_executing <= 1)
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
11004 {
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
11005 if (args.length () == 0 || args.length () == 1)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11006 {
13801
195ff3561152 allow figure handles to be non-integers
John W. Eaton <jwe@octave.org>
parents: 13799
diff changeset
11007 Matrix hlist = gh_manager::figure_handle_list (true);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11008
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11009 for (int i = 0; ! error_state && i < hlist.length (); i++)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11010 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11011 graphics_handle h = gh_manager::lookup (hlist(i));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11012
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11013 if (h.ok () && h != 0)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11014 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11015 graphics_object go = gh_manager::get_object (h);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11016 figure::properties& fprops
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11017 = dynamic_cast <figure::properties&> (go.get_properties ());
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11018
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11019 if (fprops.is_modified ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11020 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11021 if (fprops.is_visible ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11022 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11023 gh_manager::unlock ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11024
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
11025 fprops.get_toolkit ().redraw_figure (go);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11026
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11027 gh_manager::lock ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11028 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11029
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11030 fprops.set_modified (false);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11031 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11032 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11033 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11034
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11035 bool do_events = true;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11036
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11037 if (args.length () == 1)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11038 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11039 caseless_str val (args(0).string_value ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11040
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11041 if (! error_state && val.compare ("expose"))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11042 do_events = false;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11043 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11044 {
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14325
diff changeset
11045 error ("drawnow: invalid argument, expected 'expose' as argument");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11046 return retval;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11047 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11048 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11049
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11050 if (do_events)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11051 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11052 gh_manager::unlock ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11053
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11054 gh_manager::process_events ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11055
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11056 gh_manager::lock ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11057 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11058 }
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
11059 else if (args.length () >= 2 && args.length () <= 4)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11060 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11061 std::string term, file, debug_file;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11062 bool mono;
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11063
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11064 term = args(0).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11065
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11066 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11067 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11068 file = args(1).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11069
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11070 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11071 {
20083
6b7aee95c54c Test directly for '|' character at front of drawnow "file".
Rik <rik@octave.org>
parents: 20078
diff changeset
11072 if (! file.empty () && file[0] == '|')
6b7aee95c54c Test directly for '|' character at front of drawnow "file".
Rik <rik@octave.org>
parents: 20078
diff changeset
11073 file = file.substr (1); // Strip leading pipe character
12449
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11074 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11075 {
20083
6b7aee95c54c Test directly for '|' character at front of drawnow "file".
Rik <rik@octave.org>
parents: 20078
diff changeset
11076 size_t pos = file.find_last_of (file_ops::dir_sep_chars ());
12449
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11077
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11078 if (pos != std::string::npos)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11079 {
12449
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11080 std::string dirname = file.substr (0, pos+1);
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11081
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11082 file_stat fs (dirname);
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11083
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11084 if (! (fs && fs.is_dir ()))
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11085 {
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14325
diff changeset
11086 error ("drawnow: nonexistent directory '%s'",
12449
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11087 dirname.c_str ());
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11088
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11089 return retval;
2f0d1e12806d invoke/terminate printing process synchronously with rendering (#32319)
Konstantinos Poulios <logari81@gmail.com>
parents: 12445
diff changeset
11090 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11091 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11092 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11093
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11094 mono = (args.length () >= 3 ? args(2).bool_value () : false);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11095
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11096 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11097 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11098 debug_file = (args.length () > 3 ? args(3).string_value ()
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11099 : "");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11100
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11101 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11102 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11103 graphics_handle h = gcf ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11104
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11105 if (h.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11106 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11107 graphics_object go = gh_manager::get_object (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11108
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11109 gh_manager::unlock ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11110
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11111 go.get_toolkit ().print_figure (go, term, file,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11112 mono, debug_file);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11113
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11114 gh_manager::lock ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11115 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11116 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11117 error ("drawnow: nothing to draw");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11118 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11119 else
12483
7a5aacf65f81 Rewrite error strings in src/ to use variables named in documentation.
Rik <octave@nomad.inbox5.com>
parents: 12467
diff changeset
11120 error ("drawnow: invalid DEBUG_FILE, expected a string value");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11121 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11122 else
12483
7a5aacf65f81 Rewrite error strings in src/ to use variables named in documentation.
Rik <octave@nomad.inbox5.com>
parents: 12467
diff changeset
11123 error ("drawnow: invalid colormode MONO, expected a boolean value");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11124 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11125 else
12483
7a5aacf65f81 Rewrite error strings in src/ to use variables named in documentation.
Rik <octave@nomad.inbox5.com>
parents: 12467
diff changeset
11126 error ("drawnow: invalid FILE, expected a string value");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11127 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11128 else
12483
7a5aacf65f81 Rewrite error strings in src/ to use variables named in documentation.
Rik <octave@nomad.inbox5.com>
parents: 12467
diff changeset
11129 error ("drawnow: invalid terminal TERM, expected a string value");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11130 }
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
11131 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11132 print_usage ();
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
11133 }
7409
73036cdd855d [project @ 2008-01-22 20:31:59 by jwe]
jwe
parents: 7408
diff changeset
11134
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
11135 gh_manager::unlock ();
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
11136
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
11137 return retval;
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
11138 }
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7403
diff changeset
11139
7859
fdd465b00ec0 Rename add_listener to addlistener.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7857
diff changeset
11140 DEFUN (addlistener, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11141 "-*- texinfo -*-\n\
7859
fdd465b00ec0 Rename add_listener to addlistener.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7857
diff changeset
11142 @deftypefn {Built-in Function} {} addlistener (@var{h}, @var{prop}, @var{fcn})\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11143 Register @var{fcn} as listener for the property @var{prop} of the graphics\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11144 object @var{h}. Property listeners are executed (in order of registration)\n\
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11145 when the property is set. The new value is already available when the\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11146 listeners are executed.\n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11147 \n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11148 @var{prop} must be a string naming a valid property in @var{h}.\n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11149 \n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11150 @var{fcn} can be a function handle, a string or a cell array whose first\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11151 element is a function handle. If @var{fcn} is a function handle, the\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11152 corresponding function should accept at least 2 arguments, that will be\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11153 set to the object handle and the empty matrix respectively. If @var{fcn}\n\
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11154 is a string, it must be any valid octave expression. If @var{fcn} is a cell\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11155 array, the first element must be a function handle with the same signature\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11156 as described above. The next elements of the cell array are passed\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11157 as additional arguments to the function.\n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11158 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11159 Example:\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11160 \n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11161 @example\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9040
diff changeset
11162 @group\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11163 function my_listener (h, dummy, p1)\n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11164 fprintf (\"my_listener called with p1=%s\\n\", p1);\n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11165 endfunction\n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11166 \n\
7859
fdd465b00ec0 Rename add_listener to addlistener.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7857
diff changeset
11167 addlistener (gcf, \"position\", @{@@my_listener, \"my string\"@})\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9040
diff changeset
11168 @end group\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11169 @end example\n\
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11170 \n\
17486
b4343603f7ab doc: Add seealso links between hggroup, addproperty, addlistener.
Rik <rik@octave.org>
parents: 17483
diff changeset
11171 @seealso{addproperty, hggroup}\n\
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11172 @end deftypefn")
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11173 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
11174 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
11175
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11176 octave_value retval;
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11177
12506
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11178 if (args.length () >= 3 && args.length () <= 4)
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11179 {
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11180 double h = args(0).double_value ();
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11181
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11182 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11183 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11184 std::string pname = args(1).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11185
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11186 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11187 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11188 graphics_handle gh = gh_manager::lookup (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11189
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11190 if (gh.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11191 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11192 graphics_object go = gh_manager::get_object (gh);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11193
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11194 go.add_property_listener (pname, args(2), POSTSET);
12506
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11195
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11196 if (args.length () == 4)
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11197 {
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11198 caseless_str persistent = args(3).string_value ();
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11199 if (persistent.compare ("persistent"))
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11200 go.add_property_listener (pname, args(2), PERSISTENT);
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11201 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11202 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11203 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11204 error ("addlistener: invalid graphics object (= %g)",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11205 h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11206 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11207 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11208 error ("addlistener: invalid property name, expected a string value");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11209 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11210 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11211 error ("addlistener: invalid handle");
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11212 }
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11213 else
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11214 print_usage ();
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11215
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11216 return retval;
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11217 }
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
11218
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11219 DEFUN (dellistener, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11220 "-*- texinfo -*-\n\
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11221 @deftypefn {Built-in Function} {} dellistener (@var{h}, @var{prop}, @var{fcn})\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11222 Remove the registration of @var{fcn} as a listener for the property\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11223 @var{prop} of the graphics object @var{h}. The function @var{fcn} must\n\
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11224 be the same variable (not just the same value), as was passed to the\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11225 original call to @code{addlistener}.\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11226 \n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11227 If @var{fcn} is not defined then all listener functions of @var{prop}\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11228 are removed.\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11229 \n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11230 Example:\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11231 \n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11232 @example\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9040
diff changeset
11233 @group\n\
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11234 function my_listener (h, dummy, p1)\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11235 fprintf (\"my_listener called with p1=%s\\n\", p1);\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11236 endfunction\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11237 \n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11238 c = @{@@my_listener, \"my string\"@};\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11239 addlistener (gcf, \"position\", c);\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11240 dellistener (gcf, \"position\", c);\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9040
diff changeset
11241 @end group\n\
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11242 @end example\n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11243 \n\
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11244 @end deftypefn")
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11245 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
11246 gh_manager::auto_lock guard;
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11247
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11248 octave_value retval;
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11249
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11250 if (args.length () == 3 || args.length () == 2)
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11251 {
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11252 double h = args(0).double_value ();
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11253
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11254 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11255 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11256 std::string pname = args(1).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11257
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11258 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11259 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11260 graphics_handle gh = gh_manager::lookup (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11261
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11262 if (gh.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11263 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11264 graphics_object go = gh_manager::get_object (gh);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11265
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11266 if (args.length () == 2)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11267 go.delete_property_listener (pname, octave_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11268 POSTSET);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11269 else
12506
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11270 {
20071
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
11271 if (args(2).is_string ()
17d647821d61 maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 20068
diff changeset
11272 && args(2).string_value () == "persistent")
12506
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11273 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11274 go.delete_property_listener (pname, octave_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11275 PERSISTENT);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11276 go.delete_property_listener (pname, octave_value (),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11277 POSTSET);
12506
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11278 }
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11279 else
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11280 go.delete_property_listener (pname, args(2), POSTSET);
0dda50ae4997 add a persistent mode for listeners
Konstantinos Poulios <logari81@gmail.com>
parents: 12502
diff changeset
11281 }
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11282 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11283 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11284 error ("dellistener: invalid graphics object (= %g)",
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11285 h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11286 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11287 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11288 error ("dellistener: invalid property name, expected a string value");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11289 }
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11290 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11291 error ("dellistener: invalid handle");
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11292 }
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11293 else
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11294 print_usage ();
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11295
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11296 return retval;
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11297 }
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
11298
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11299 DEFUN (addproperty, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11300 "-*- texinfo -*-\n\
11572
7d6d8c1e471f Grammarcheck Texinfo for files in src directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
11301 @deftypefn {Built-in Function} {} addproperty (@var{name}, @var{h}, @var{type})\n\
7d6d8c1e471f Grammarcheck Texinfo for files in src directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
11302 @deftypefnx {Built-in Function} {} addproperty (@var{name}, @var{h}, @var{type}, @var{arg}, @dots{})\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11303 Create a new property named @var{name} in graphics object @var{h}.\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11304 @var{type} determines the type of the property to create. @var{args}\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11305 usually contains the default value of the property, but additional\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11306 arguments might be given, depending on the type of the property.\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11307 \n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11308 The supported property types are:\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11309 \n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11310 @table @code\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11311 @item string\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11312 A string property. @var{arg} contains the default string value.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
11313 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11314 @item any\n\
16826
a4969508008e doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents: 16814
diff changeset
11315 An @nospell{un-typed} property. This kind of property can hold any octave\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11316 value. @var{args} contains the default value.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
11317 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11318 @item radio\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11319 A string property with a limited set of accepted values. The first\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11320 argument must be a string with all accepted values separated by\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11321 a vertical bar ('|'). The default value can be marked by enclosing\n\
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11322 it with a '@{' '@}' pair. The default value may also be given as\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11323 an optional second string argument.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
11324 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11325 @item boolean\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11326 A boolean property. This property type is equivalent to a radio\n\
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11327 property with \"on|off\" as accepted values. @var{arg} contains\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11328 the default property value.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
11329 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11330 @item double\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11331 A scalar double property. @var{arg} contains the default value.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
11332 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11333 @item handle\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11334 A handle property. This kind of property holds the handle of a\n\
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11335 graphics object. @var{arg} contains the default handle value.\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11336 When no default value is given, the property is initialized to\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11337 the empty matrix.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
11338 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11339 @item data\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11340 A data (matrix) property. @var{arg} contains the default data\n\
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11341 value. When no default value is given, the data is initialized to\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11342 the empty matrix.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10792
diff changeset
11343 \n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11344 @item color\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11345 A color property. @var{arg} contains the default color value.\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11346 When no default color is given, the property is set to black.\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11347 An optional second string argument may be given to specify an\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11348 additional set of accepted string values (like a radio property).\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11349 @end table\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11350 \n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11351 @var{type} may also be the concatenation of a core object type and\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11352 a valid property name for that object type. The property created\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11353 then has the same characteristics as the referenced property (type,\n\
9040
dbd0c77e575e Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents: 8961
diff changeset
11354 possible values, hidden state@dots{}). This allows to clone an existing\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11355 property into the graphics object @var{h}.\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11356 \n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11357 Examples:\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11358 \n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11359 @example\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9040
diff changeset
11360 @group\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11361 addproperty (\"my_property\", gcf, \"string\", \"a string value\");\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11362 addproperty (\"my_radio\", gcf, \"radio\", \"val_1|val_2|@{val_3@}\");\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11363 addproperty (\"my_style\", gcf, \"linelinestyle\", \"--\");\n\
9064
7c02ec148a3c Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents: 9040
diff changeset
11364 @end group\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11365 @end example\n\
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11366 \n\
17486
b4343603f7ab doc: Add seealso links between hggroup, addproperty, addlistener.
Rik <rik@octave.org>
parents: 17483
diff changeset
11367 @seealso{addlistener, hggroup}\n\
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11368 @end deftypefn")
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11369 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
11370 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
11371
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11372 octave_value retval;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11373
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11374 if (args.length () >= 3)
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11375 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11376 std::string name = args(0).string_value ();
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11377
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11378 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11379 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11380 double h = args(1).double_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11381
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11382 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11383 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11384 graphics_handle gh = gh_manager::lookup (h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11385
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11386 if (gh.ok ())
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11387 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11388 graphics_object go = gh_manager::get_object (gh);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11389
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11390 std::string type = args(2).string_value ();
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11391
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11392 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11393 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11394 if (! go.get_properties ().has_property (name))
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11395 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11396 property p = property::create (name, gh, type,
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11397 args.splice (0, 3));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11398
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11399 if (! error_state)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11400 go.get_properties ().insert_property (name, p);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11401 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11402 else
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14325
diff changeset
11403 error ("addproperty: a '%s' property already exists in the graphics object",
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11404 name.c_str ());
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11405 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11406 else
12483
7a5aacf65f81 Rewrite error strings in src/ to use variables named in documentation.
Rik <octave@nomad.inbox5.com>
parents: 12467
diff changeset
11407 error ("addproperty: invalid property TYPE, expected a string value");
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11408 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11409 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11410 error ("addproperty: invalid graphics object (= %g)", h);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11411 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11412 else
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11413 error ("addproperty: invalid handle value");
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11414 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11415 else
12483
7a5aacf65f81 Rewrite error strings in src/ to use variables named in documentation.
Rik <octave@nomad.inbox5.com>
parents: 12467
diff changeset
11416 error ("addproperty: invalid property NAME, expected a string value");
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11417 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11418 else
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11419 print_usage ();
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11420
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11421 return retval;
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11422 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
11423
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11424 octave_value
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
11425 get_property_from_handle (double handle, const std::string& property,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11426 const std::string& func)
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11427 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
11428 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
11429
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11430 graphics_object obj = gh_manager::get_object (handle);
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11431 octave_value retval;
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11432
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11433 if (obj)
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
11434 retval = obj.get (caseless_str (property));
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11435 else
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
11436 error ("%s: invalid handle (= %g)", func.c_str (), handle);
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11437
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11438 return retval;
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11439 }
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11440
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11441 bool
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
11442 set_property_in_handle (double handle, const std::string& property,
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11443 const octave_value& arg, const std::string& func)
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11444 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13247
diff changeset
11445 gh_manager::auto_lock guard;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7924
diff changeset
11446
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11447 graphics_object obj = gh_manager::get_object (handle);
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11448 int ret = false;
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11449
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11450 if (obj)
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11451 {
9582
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
11452 obj.set (caseless_str (property), arg);
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
11453
bdcfb756d721 improve error messages for ambiguous graphics property names
John W. Eaton <jwe@octave.org>
parents: 9561
diff changeset
11454 if (! error_state)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10301
diff changeset
11455 ret = true;
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11456 }
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11457 else
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14798
diff changeset
11458 error ("%s: invalid handle (= %g)", func.c_str (), handle);
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11459
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11460 return ret;
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents: 6568
diff changeset
11461 }
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11462
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11463 static bool
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11464 compare_property_values (const octave_value& o1, const octave_value& o2)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11465 {
18111
b560bac0fca2 maint: Don't use space between 'args' and '(' when doing indexing.
Rik <rik@octave.org>
parents: 18099
diff changeset
11466 octave_value_list args(2);
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11467
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11468 args(0) = o1;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11469 args(1) = o2;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11470
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11471 octave_value_list result = feval ("isequal", args, 1);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11472
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11473 if (! error_state && result.length () > 0)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11474 return result(0).bool_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11475
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11476 return false;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11477 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11478
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11479 static std::map<uint32_t, bool> waitfor_results;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11480
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11481 static void
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11482 cleanup_waitfor_id (uint32_t id)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11483 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11484 waitfor_results.erase (id);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11485 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11486
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11487 static void
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11488 do_cleanup_waitfor_listener (const octave_value& listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11489 listener_mode mode = POSTSET)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11490 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11491 Cell c = listener.cell_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11492
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11493 if (c.numel () >= 4)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11494 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11495 double h = c(2).double_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11496
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11497 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11498 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11499 caseless_str pname = c(3).string_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11500
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11501 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11502 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11503 gh_manager::auto_lock guard;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11504
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11505 graphics_handle handle = gh_manager::lookup (h);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11506
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11507 if (handle.ok ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11508 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11509 graphics_object go = gh_manager::get_object (handle);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11510
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11511 if (go.get_properties ().has_property (pname))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11512 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11513 go.get_properties ().delete_listener (pname, listener,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11514 mode);
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11515 if (mode == POSTSET)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11516 go.get_properties ().delete_listener (pname, listener,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11517 PERSISTENT);
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11518 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11519 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11520 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11521 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11522 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11523 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11524
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11525 static void
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
11526 cleanup_waitfor_postset_listener (const octave_value& listener)
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11527 { do_cleanup_waitfor_listener (listener, POSTSET); }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11528
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11529 static void
14861
f7afecdd87ef maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
11530 cleanup_waitfor_predelete_listener (const octave_value& listener)
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11531 { do_cleanup_waitfor_listener (listener, PREDELETE); }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11532
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11533 static octave_value_list
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11534 waitfor_listener (const octave_value_list& args, int)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11535 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11536 if (args.length () > 3)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11537 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11538 uint32_t id = args(2).uint32_scalar_value ().value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11539
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11540 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11541 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11542 if (args.length () > 5)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11543 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11544 double h = args(0).double_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11545
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11546 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11547 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11548 caseless_str pname = args(4).string_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11549
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11550 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11551 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11552 gh_manager::auto_lock guard;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11553
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11554 graphics_handle handle = gh_manager::lookup (h);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11555
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11556 if (handle.ok ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11557 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11558 graphics_object go = gh_manager::get_object (handle);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11559 octave_value pvalue = go.get (pname);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11560
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11561 if (compare_property_values (pvalue, args(5)))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11562 waitfor_results[id] = true;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11563 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11564 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11565 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11566 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11567 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11568 waitfor_results[id] = true;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11569 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11570 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11571
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11572 return octave_value_list ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11573 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11574
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11575 static octave_value_list
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11576 waitfor_del_listener (const octave_value_list& args, int)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11577 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11578 if (args.length () > 2)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11579 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11580 uint32_t id = args(2).uint32_scalar_value ().value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11581
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11582 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11583 waitfor_results[id] = true;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11584 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11585
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11586 return octave_value_list ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11587 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11588
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11589 DEFUN (waitfor, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11590 "-*- texinfo -*-\n\
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11591 @deftypefn {Built-in Function} {} waitfor (@var{h})\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11592 @deftypefnx {Built-in Function} {} waitfor (@var{h}, @var{prop})\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11593 @deftypefnx {Built-in Function} {} waitfor (@var{h}, @var{prop}, @var{value})\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11594 @deftypefnx {Built-in Function} {} waitfor (@dots{}, \"timeout\", @var{timeout})\n\
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13925
diff changeset
11595 Suspend the execution of the current program until a condition is\n\
17483
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11596 satisfied on the graphics handle @var{h}.\n\
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11597 \n\
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11598 While the program is suspended graphics events are still being processed\n\
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11599 normally, allowing callbacks to modify the state of graphics objects. This\n\
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11600 function is reentrant and can be called from a callback, while another\n\
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11601 @code{waitfor} call is pending at the top-level.\n\
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11602 \n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11603 In the first form, program execution is suspended until the graphics object\n\
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13925
diff changeset
11604 @var{h} is destroyed. If the graphics handle is invalid, the function\n\
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11605 returns immediately.\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11606 \n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11607 In the second form, execution is suspended until the graphics object is\n\
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13925
diff changeset
11608 destroyed or the property named @var{prop} is modified. If the graphics\n\
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11609 handle is invalid or the property does not exist, the function returns\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11610 immediately.\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11611 \n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11612 In the third form, execution is suspended until the graphics object is\n\
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13925
diff changeset
11613 destroyed or the property named @var{prop} is set to @var{value}. The\n\
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13925
diff changeset
11614 function @code{isequal} is used to compare property values. If the graphics\n\
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11615 handle is invalid, the property does not exist or the property is already\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11616 set to @var{value}, the function returns immediately.\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11617 \n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11618 An optional timeout can be specified using the property @code{timeout}.\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11619 This timeout value is the number of seconds to wait for the condition to be\n\
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13925
diff changeset
11620 true. @var{timeout} must be at least 1. If a smaller value is specified, a\n\
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13925
diff changeset
11621 warning is issued and a value of 1 is used instead. If the timeout value is\n\
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11622 not an integer, it is truncated towards 0.\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11623 \n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11624 To define a condition on a property named @code{timeout}, use the string\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11625 @code{\\timeout} instead.\n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11626 \n\
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11627 In all cases, typing CTRL-C stops program execution immediately.\n\
17483
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11628 @seealso{waitforbuttonpress, isequal}\n\
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11629 @end deftypefn")
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11630 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11631 if (args.length () > 0)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11632 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11633 double h = args(0).double_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11634
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11635 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11636 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11637 caseless_str pname;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11638
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11639 unwind_protect frame;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11640
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11641 static uint32_t id_counter = 0;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11642 uint32_t id = 0;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11643
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11644 int max_arg_index = 0;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11645 int timeout_index = -1;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11646
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11647 int timeout = 0;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11648
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11649 if (args.length () > 1)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11650 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11651 pname = args(1).string_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11652 if (! error_state
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11653 && ! pname.empty ()
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11654 && ! pname.compare ("timeout"))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11655 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11656 if (pname.compare ("\\timeout"))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11657 pname = "timeout";
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11658
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11659 static octave_value wf_listener;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11660
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11661 if (! wf_listener.is_defined ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11662 wf_listener =
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11663 octave_value (new octave_builtin (waitfor_listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11664 "waitfor_listener"));
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11665
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11666 max_arg_index++;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11667 if (args.length () > 2)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11668 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11669 if (args(2).is_string ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11670 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11671 caseless_str s = args(2).string_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11672
19948
67f2c76f9f4d Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents: 19898
diff changeset
11673 if (s.compare ("timeout"))
67f2c76f9f4d Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents: 19898
diff changeset
11674 timeout_index = 2;
67f2c76f9f4d Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents: 19898
diff changeset
11675 else
67f2c76f9f4d Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents: 19898
diff changeset
11676 max_arg_index++;
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11677 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11678 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11679 max_arg_index++;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11680 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11681
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11682 Cell listener (1, max_arg_index >= 2 ? 5 : 4);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11683
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11684 id = id_counter++;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11685 frame.add_fcn (cleanup_waitfor_id, id);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11686 waitfor_results[id] = false;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11687
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11688 listener(0) = wf_listener;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11689 listener(1) = octave_uint32 (id);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11690 listener(2) = h;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11691 listener(3) = pname;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11692
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11693 if (max_arg_index >= 2)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11694 listener(4) = args(2);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11695
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11696 octave_value ov_listener (listener);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11697
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11698 gh_manager::auto_lock guard;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11699
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11700 graphics_handle handle = gh_manager::lookup (h);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11701
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11702 if (handle.ok ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11703 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11704 graphics_object go = gh_manager::get_object (handle);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11705
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11706 if (max_arg_index >= 2
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11707 && compare_property_values (go.get (pname),
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11708 args(2)))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11709 waitfor_results[id] = true;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11710 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11711 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11712
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11713 frame.add_fcn (cleanup_waitfor_postset_listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11714 ov_listener);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11715 go.add_property_listener (pname, ov_listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11716 POSTSET);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11717 go.add_property_listener (pname, ov_listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11718 PERSISTENT);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11719
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11720 if (go.get_properties ()
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11721 .has_dynamic_property (pname))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11722 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11723 static octave_value wf_del_listener;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11724
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11725 if (! wf_del_listener.is_defined ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11726 wf_del_listener =
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11727 octave_value (new octave_builtin
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11728 (waitfor_del_listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11729 "waitfor_del_listener"));
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11730
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11731 Cell del_listener (1, 4);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11732
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11733 del_listener(0) = wf_del_listener;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11734 del_listener(1) = octave_uint32 (id);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11735 del_listener(2) = h;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11736 del_listener(3) = pname;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11737
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11738 octave_value ov_del_listener (del_listener);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11739
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11740 frame.add_fcn (cleanup_waitfor_predelete_listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11741 ov_del_listener);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11742 go.add_property_listener (pname, ov_del_listener,
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11743 PREDELETE);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11744 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11745 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11746 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11747 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11748 else if (error_state || pname.empty ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11749 error ("waitfor: invalid property name, expected a non-empty string value");
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11750 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11751
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11752 if (! error_state
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11753 && timeout_index < 0
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11754 && args.length () > (max_arg_index + 1))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11755 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11756 caseless_str s = args(max_arg_index + 1).string_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11757
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11758 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11759 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11760 if (s.compare ("timeout"))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11761 timeout_index = max_arg_index + 1;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11762 else
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14325
diff changeset
11763 error ("waitfor: invalid parameter '%s'", s.c_str ());
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11764 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11765 else
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14325
diff changeset
11766 error ("waitfor: invalid parameter, expected 'timeout'");
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11767 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11768
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11769 if (! error_state && timeout_index >= 0)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11770 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11771 if (args.length () > (timeout_index + 1))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11772 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11773 timeout = static_cast<int>
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
11774 (args(timeout_index + 1).scalar_value ());
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11775
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11776 if (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11777 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11778 if (timeout < 1)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11779 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11780 warning ("waitfor: the timeout value must be >= 1, using 1 instead");
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11781 timeout = 1;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11782 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11783 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11784 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11785 error ("waitfor: invalid timeout value, expected a value >= 1");
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11786 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11787 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11788 error ("waitfor: missing timeout value");
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11789 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11790
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11791 // FIXME: There is still a "hole" in the following loop. The code
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11792 // assumes that an object handle is unique, which is a fair
17483
710309214e0d doc: Add seealso links between waitfor, waitforbuttonpress, and ginput.
Rik <rik@octave.org>
parents: 17443
diff changeset
11793 // assumption, except for figures. If a figure is destroyed
13924
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11794 // then recreated with the same figure ID, within the same
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11795 // run of event hooks, then the figure destruction won't be
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11796 // caught and the loop will not stop. This is an unlikely
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11797 // possibility in practice, though.
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11798 //
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11799 // Using deletefcn callback is also unreliable as it could be
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11800 // modified during a callback execution and the waitfor loop
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11801 // would not stop.
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11802 //
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11803 // The only "good" implementation would require object
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11804 // listeners, similar to property listeners.
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11805
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11806 time_t start = 0;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11807
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11808 if (timeout > 0)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11809 start = time (0);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11810
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11811 while (! error_state)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11812 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11813 if (true)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11814 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11815 gh_manager::auto_lock guard;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11816
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11817 graphics_handle handle = gh_manager::lookup (h);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11818
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11819 if (handle.ok ())
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11820 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11821 if (! pname.empty () && waitfor_results[id])
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11822 break;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11823 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11824 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11825 break;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11826 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11827
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11828 octave_usleep (100000);
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11829
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11830 OCTAVE_QUIT;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11831
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11832 command_editor::run_event_hooks ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11833
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11834 if (timeout > 0)
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11835 {
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11836 if (start + timeout < time (0))
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11837 break;
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11838 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11839 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11840 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11841 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11842 error ("waitfor: invalid handle value.");
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11843 }
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11844 else
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11845 print_usage ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11846
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11847 return octave_value ();
3b654a0753b1 Implement waitfor, uiwait and uiresume.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13910
diff changeset
11848 }
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11849
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11850 DEFUN (__zoom__, args, ,
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11851 "-*- texinfo -*-\n\
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11852 @deftypefn {Built-in Function} {} __zoom__ (@var{axes}, @var{mode}, @var{factor})\n\
20000
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19948
diff changeset
11853 @deftypefnx {Built-in Function} {} __zoom__ (@var{axes}, \"out\")\n\
ca7599ae464d doc: Grammarcheck documentation ahead of 4.0 release.
Rik <rik@octave.org>
parents: 19948
diff changeset
11854 @deftypefnx {Built-in Function} {} __zoom__ (@var{axes}, \"reset\")\n\
19864
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11855 Undocumented internal function.\n\
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11856 @end deftypefn")
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11857 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11858 octave_value retval;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11859
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11860 int nargin = args.length ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11861
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11862 if (nargin != 2 && nargin != 3)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11863 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11864 print_usage ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11865 return retval;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11866 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11867
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11868 double h = args(0).double_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11869
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11870 if (error_state)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11871 return retval;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11872
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11873 gh_manager::auto_lock guard;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11874
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11875 graphics_handle handle = gh_manager::lookup (h);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11876
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11877 if (! handle.ok ())
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11878 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11879 error ("__zoom__: invalid handle");
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11880 return retval;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11881 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11882
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11883 graphics_object ax = gh_manager::get_object (handle);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11884
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11885 axes::properties& ax_props =
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11886 dynamic_cast<axes::properties&> (ax.get_properties ());
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11887
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11888 if (nargin == 2)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11889 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11890 std::string opt = args(1).string_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11891
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11892 if (error_state)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11893 return retval;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11894
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11895 if (opt == "out" || opt == "reset")
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11896 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11897 if (opt == "out")
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11898 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11899 ax_props.clear_zoom_stack ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11900 Vdrawnow_requested = true;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11901 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11902 else
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11903 ax_props.clear_zoom_stack (false);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11904
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11905 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11906 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11907 else
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11908 {
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11909 std::string mode = args(1).string_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11910 double factor = args(2).scalar_value ();
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11911
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11912 if (error_state)
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11913 return retval;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11914
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11915 ax_props.zoom (mode, factor);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11916 }
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11917
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11918 return retval;
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19860
diff changeset
11919 }