annotate libinterp/corefcn/graphics.in.h @ 30253:20fd3c03fd74

Add new plot marker styles '|' and '_' (bug #61350) * NEWS: Announce addition. * gl-render.cc (make_marker_list): Add instructions for drawing '|' and '_' markers. * graphics.cc (radio_values::radio_values): Add special case in constructor from string of options to parse '|||' and return value '|'. * graphics.in.h (line, patch, scatter, surface): Add '|' and '_' to marker property for graphics objects which have this property. * __pltopt__.m: Add '|' and '_' to list of possible markers in input validation. * __gnuplot_draw_axes__.m: Add FIXME note about implementing these two markers in gnuplot. There doesn't seem to be an easy way to do this as it is not one of the defined point styles.
author Rik <rik@octave.org>
date Wed, 27 Oct 2021 15:07:52 -0700
parents 14b098a6ba46
children f306fe9bfa0d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
29358
0a5b15007766 update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29014
diff changeset
3 // Copyright (C) 2007-2021 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
25
20791
f7084eae3318 maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents: 20785
diff changeset
26 #if ! defined (octave_graphics_h)
17822
ebb3ef964372 maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents: 17787
diff changeset
27 #define octave_graphics_h 1
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
28
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21209
diff changeset
29 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21209
diff changeset
30
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
31 #include <cctype>
23639
b488e958d024 Use modf, pow from C++ std library.
Rik <rik@octave.org>
parents: 23583
diff changeset
32 #include <cmath>
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
33
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
34 #include <algorithm>
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
35 #include <list>
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
36 #include <map>
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
37 #include <memory>
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
38 #include <set>
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
39 #include <sstream>
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
40 #include <string>
27798
8c1cb06468db Change class of coplanar_last_idx for patch objects (bug #55895).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27734
diff changeset
41 #include <vector>
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
42
11075
4e31d44a9763 extract caseless_str class to separate header file
John W. Eaton <jwe@octave.org>
parents: 11074
diff changeset
43 #include "caseless-str.h"
9004
17ba311ef110 add one more missing include
Jaroslav Hajek <highegg@gmail.com>
parents: 8944
diff changeset
44
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents: 21055
diff changeset
45 #include "errwarn.h"
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents: 23763
diff changeset
46 #include "graphics-handle.h"
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents: 23763
diff changeset
47 #include "graphics-toolkit.h"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
48 #include "oct-map.h"
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
49 #include "oct-mutex.h"
13985
43cc49c7abd1 Use thread-safe atomic reference counting (GCC and MSVC).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13938
diff changeset
50 #include "oct-refcount.h"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
51 #include "ov.h"
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents: 21200
diff changeset
52 #include "text-renderer.h"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
53
29993
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
54 OCTAVE_NAMESPACE_BEGIN
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
55
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
56 // FIXME: maybe this should be a configure option?
8944
cb0e9facc342 make default fontname * instead of Helvetica
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
57 // Matlab defaults to "Helvetica", but that causes problems for many
cb0e9facc342 make default fontname * instead of Helvetica
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
58 // gnuplot users.
20791
f7084eae3318 maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents: 20785
diff changeset
59 #if ! defined (OCTAVE_DEFAULT_FONTNAME)
8944
cb0e9facc342 make default fontname * instead of Helvetica
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
60 #define OCTAVE_DEFAULT_FONTNAME "*"
cb0e9facc342 make default fontname * instead of Helvetica
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
61 #endif
cb0e9facc342 make default fontname * instead of Helvetica
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
62
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
63 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
64
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
65 class OCTINTERP_API base_scaler
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
66 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
67 public:
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
68 base_scaler (void) { }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
69
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
70 virtual ~base_scaler (void) = default;
7440
4e3b073e910e [project @ 2008-02-02 18:23:50 by jwe]
jwe
parents: 7439
diff changeset
71
20893
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
72 virtual Matrix scale (const Matrix&) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
73 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
74 error ("invalid axis scale");
20893
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
75 }
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
76
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
77 virtual NDArray scale (const NDArray&) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
78 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
79 error ("invalid axis scale");
20893
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
80 }
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
81
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
82 virtual double scale (double) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
83 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
84 error ("invalid axis scale");
20893
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
85 }
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
86
384ff5aa9437 2015 Code Sprint: Eliminate useless return statements after error ().
Rik <rik@octave.org>
parents: 20791
diff changeset
87 virtual double unscale (double) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
88 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
89 error ("invalid axis scale");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
90 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
91
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
92 virtual base_scaler * clone () const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
93 { return new base_scaler (); }
7832
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
94
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
95 virtual bool is_linear (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
96 { return false; }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
97 };
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
98
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
99 class lin_scaler : public base_scaler
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
100 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
101 public:
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
102 lin_scaler (void) { }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
103
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
104 Matrix scale (const Matrix& m) const { return m; }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
105
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
106 NDArray scale (const NDArray& m) const { return m; }
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
107
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
108 double scale (double d) const { return d; }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
109
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
110 double unscale (double d) const { return d; }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
111
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
112 base_scaler * clone (void) const { return new lin_scaler (); }
7832
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
113
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
114 bool is_linear (void) const { return true; }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
115 };
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
116
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
117 class log_scaler : public base_scaler
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
118 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
119 public:
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
120 log_scaler (void) { }
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
121
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
122 Matrix scale (const Matrix& m) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
123 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
124 Matrix retval (m.rows (), m.cols ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
125
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
126 do_scale (m.data (), retval.fortran_vec (), m.numel ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
127
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
128 return retval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
129 }
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
130
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
131 NDArray scale (const NDArray& m) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
132 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
133 NDArray retval (m.dims ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
134
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
135 do_scale (m.data (), retval.fortran_vec (), m.numel ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
136
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
137 return retval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
138 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
139
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
140 double scale (double d) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
141 { return log10 (d); }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
142
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
143 double unscale (double d) const
23639
b488e958d024 Use modf, pow from C++ std library.
Rik <rik@octave.org>
parents: 23583
diff changeset
144 { return std::pow (10.0, d); }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
145
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
146 base_scaler * clone (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
147 { return new log_scaler (); }
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
148
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
149 private:
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
150 void do_scale (const double *src, double *dest, int n) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
151 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
152 for (int i = 0; i < n; i++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
153 dest[i] = log10 (src[i]);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
154 }
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
155 };
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
156
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
157 class OCTINTERP_API neg_log_scaler : public base_scaler
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
158 {
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
159 public:
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
160 neg_log_scaler (void) { }
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
161
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
162 Matrix scale (const Matrix& m) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
163 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
164 Matrix retval (m.rows (), m.cols ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
165
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
166 do_scale (m.data (), retval.fortran_vec (), m.numel ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
167
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
168 return retval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
169 }
13756
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13722
diff changeset
170
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
171 NDArray scale (const NDArray& m) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
172 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
173 NDArray retval (m.dims ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
174
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
175 do_scale (m.data (), retval.fortran_vec (), m.numel ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
176
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
177 return retval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
178 }
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
179
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
180 double scale (double d) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
181 { return -log10 (-d); }
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
182
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
183 double unscale (double d) const
23639
b488e958d024 Use modf, pow from C++ std library.
Rik <rik@octave.org>
parents: 23583
diff changeset
184 { return -std::pow (10.0, -d); }
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
185
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
186 base_scaler * clone (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
187 { return new neg_log_scaler (); }
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
188
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
189 private:
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
190 void do_scale (const double *src, double *dest, int n) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
191 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
192 for (int i = 0; i < n; i++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
193 dest[i] = -log10 (-src[i]);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
194 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
195 };
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
196
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
197 class OCTINTERP_API scaler
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
198 {
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
199 public:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
200 scaler (void) : m_rep (new base_scaler ()) { }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
201
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
202 scaler (const scaler& s) : m_rep (s.m_rep->clone ()) { }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
203
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12126
diff changeset
204 scaler (const std::string& s)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
205 : m_rep (s == "log"
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
206 ? new log_scaler ()
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
207 : (s == "neglog"
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
208 ? new neg_log_scaler ()
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
209 : (s == "linear"
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
210 ? new lin_scaler ()
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
211 : new base_scaler ())))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
212 { }
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12126
diff changeset
213
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
214 ~scaler (void) { delete m_rep; }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
215
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
216 Matrix scale (const Matrix& m) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
217 { return m_rep->scale (m); }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
218
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
219 NDArray scale (const NDArray& m) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
220 { return m_rep->scale (m); }
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
221
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
222 double scale (double d) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
223 { return m_rep->scale (d); }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
224
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
225 double unscale (double d) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
226 { return m_rep->unscale (d); }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
227
7832
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
228 bool is_linear (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
229 { return m_rep->is_linear (); }
7832
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
230
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
231 scaler& operator = (const scaler& s)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
232 {
26383
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
233 if (&s != this)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
234 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
235 if (m_rep)
26383
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
236 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
237 delete m_rep;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
238 m_rep = nullptr;
26383
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
239 }
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
240
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
241 m_rep = s.m_rep->clone ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
242 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
243
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
244 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
245 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
246
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
247 scaler& operator = (const std::string& s)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
248 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
249 if (m_rep)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
250 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
251 delete m_rep;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
252 m_rep = nullptr;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
253 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
254
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
255 if (s == "log")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
256 m_rep = new log_scaler ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
257 else if (s == "neglog")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
258 m_rep = new neg_log_scaler ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
259 else if (s == "linear")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
260 m_rep = new lin_scaler ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
261 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
262 m_rep = new base_scaler ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
263
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
264 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
265 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
266
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
267 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
268 base_scaler *m_rep;
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
269 };
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
270
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
271 // ---------------------------------------------------------------------
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
272
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
273 class OCTINTERP_API property;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
274
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
275 // FIXME: These values should probably be defined inside a namespace or
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
276 // class, but which one is most appropriate? For now, prefix with
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
277 // "GCB_" to avoid conflict with PERSISTENT token ID used in the lexer.
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
278 // The lexer token IDs should probably also be fixed...
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
279
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
280 enum listener_mode { GCB_POSTSET, GCB_PERSISTENT, GCB_PREDELETE };
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
281
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
282 class OCTINTERP_API base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
283 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
284 public:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
285 friend class property;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
286
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
287 public:
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 12164
diff changeset
288 base_property (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
289 : m_id (-1), m_count (1), m_name (), m_parent (), m_hidden (),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
290 m_listeners ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
291 { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
292
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
293 base_property (const std::string& s, const graphics_handle& h)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
294 : m_id (-1), m_count (1), m_name (s), m_parent (h), m_hidden (false),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
295 m_listeners ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
296 { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
297
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
298 base_property (const base_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
299 : m_id (-1), m_count (1), m_name (p.m_name), m_parent (p.m_parent),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
300 m_hidden (p.m_hidden), m_listeners ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
301 { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
302
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
303 virtual ~base_property (void) = default;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
304
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
305 bool ok (void) const { return m_parent.ok (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
306
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
307 std::string get_name (void) const { return m_name; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
308
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
309 void set_name (const std::string& s) { m_name = s; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
310
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
311 graphics_handle get_parent (void) const { return m_parent; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
312
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
313 void set_parent (const graphics_handle& h) { m_parent = h; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
314
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
315 bool is_hidden (void) const { return m_hidden; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
316
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
317 void set_hidden (bool flag) { m_hidden = flag; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
318
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
319 virtual bool is_radio (void) const { return false; }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
320
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
321 int get_id (void) const { return m_id; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
322
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
323 void set_id (int d) { m_id = d; }
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
324
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
325 // Sets property value, notifies graphics toolkit.
8058
ca39c21fa4b8 [mq]: generic_octave_to_backend_nofitication
John W. Eaton <jwe@octave.org>
parents: 8052
diff changeset
326 // If do_run is true, runs associated listeners.
13321
5ea207067ee5 Export base_property::set.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13307
diff changeset
327 OCTINTERP_API bool set (const octave_value& v, bool do_run = true,
5ea207067ee5 Export base_property::set.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13307
diff changeset
328 bool do_notify_toolkit = true);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
329
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
330 virtual octave_value get (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
331 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
332 error (R"(get: invalid property "%s")", m_name.c_str ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
333 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
334
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
335 virtual std::string values_as_string (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
336 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
337 error (R"(values_as_string: invalid property "%s")", m_name.c_str ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
338 }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
339
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
340 virtual Cell values_as_cell (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
341 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
342 error (R"(values_as_cell: invalid property "%s")", m_name.c_str ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
343 }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
344
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
345 base_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
346 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
347 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
348 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
349 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
350
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
351 void add_listener (const octave_value& v, listener_mode mode = GCB_POSTSET)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
352 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
353 octave_value_list& l = m_listeners[mode];
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
354 l.resize (l.length () + 1, v);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
355 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
356
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
357 void delete_listener (const octave_value& v = octave_value (),
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
358 listener_mode mode = GCB_POSTSET)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
359 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
360 octave_value_list& l = m_listeners[mode];
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
361
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
362 if (v.is_defined ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
363 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
364 bool found = false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
365 int i;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
366
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
367 for (i = 0; i < l.length (); i++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
368 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
369 if (v.internal_rep () == l(i).internal_rep ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
370 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
371 found = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
372 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
373 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
374 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
375 if (found)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
376 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
377 for (int j = i; j < l.length () - 1; j++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
378 l(j) = l(j + 1);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
379
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
380 l.resize (l.length () - 1);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
381 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
382 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
383 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
384 {
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
385 if (mode == GCB_PERSISTENT)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
386 l.resize (0);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
387 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
388 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
389 octave_value_list lnew (0);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
390 octave_value_list& lp = m_listeners[GCB_PERSISTENT];
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
391 for (int i = l.length () - 1; i >= 0 ; i--)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
392 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
393 for (int j = 0; j < lp.length (); j++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
394 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
395 if (l(i).internal_rep () == lp(j).internal_rep ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
396 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
397 lnew.resize (lnew.length () + 1, l(i));
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
398 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
399 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
400 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
401 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
402 l = lnew;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
403 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
404 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
405
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
406 }
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
407
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
408 OCTINTERP_API void run_listeners (listener_mode mode = GCB_POSTSET);
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
409
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
410 virtual base_property * clone (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
411 { return new base_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
412
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
413 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
414 virtual bool do_set (const octave_value&)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
415 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
416 error (R"(set: invalid property "%s")", m_name.c_str ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
417 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
418
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
419 private:
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
420 typedef std::map<listener_mode, octave_value_list> listener_map;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
421 typedef std::map<listener_mode, octave_value_list>::iterator
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
422 listener_map_iterator;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
423 typedef std::map<listener_mode, octave_value_list>::const_iterator
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
424 listener_map_const_iterator;
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
425
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
426 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
427 int m_id;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
428 octave::refcount<octave_idx_type> m_count;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
429 std::string m_name;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
430 graphics_handle m_parent;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
431 bool m_hidden;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
432 listener_map m_listeners;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
433 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
434
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
435 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
436
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
437 class OCTINTERP_API string_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
438 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
439 public:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
440 string_property (const std::string& s, const graphics_handle& h,
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
441 const std::string& val = "")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
442 : base_property (s, h), m_str (val) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
443
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
444 string_property (const string_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
445 : base_property (p), m_str (p.m_str) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
446
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
447 octave_value get (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
448 { return octave_value (m_str); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
449
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
450 std::string string_value (void) const { return m_str; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
451
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
452 string_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
453 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
454 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
455 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
456 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
457
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
458 base_property * clone (void) const { return new string_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
459
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
460 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
461 bool do_set (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
462 {
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
463 if (! val.is_string ())
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
464 error (R"(set: invalid string property value for "%s")",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
465 get_name ().c_str ());
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
466
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
467 std::string new_str = val.string_value ();
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
468
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
469 if (new_str != m_str)
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
470 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
471 m_str = new_str;
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
472 return true;
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
473 }
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
474 return false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
475 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
476
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
477 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
478 std::string m_str;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
479 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
480
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
481 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
482
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
483 class OCTINTERP_API string_array_property : public base_property
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
484 {
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
485 public:
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
486 enum desired_enum { string_t, cell_t };
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
487
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
488 string_array_property (const std::string& s, const graphics_handle& h,
16890
830f27544bb7 Accept char array inputs for linestyleorder property (bug #34906).
Rik <rik@octave.org>
parents: 16832
diff changeset
489 const std::string& val = "", const char& sep = '|',
830f27544bb7 Accept char array inputs for linestyleorder property (bug #34906).
Rik <rik@octave.org>
parents: 16832
diff changeset
490 const desired_enum& typ = string_t)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
491 : base_property (s, h), m_desired_type (typ), m_separator (sep), m_str ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
492 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
493 std::size_t pos = 0;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
494
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
495 while (true)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
496 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
497 std::size_t new_pos = val.find_first_of (m_separator, pos);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
498
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
499 if (new_pos == std::string::npos)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
500 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
501 m_str.append (val.substr (pos));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
502 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
503 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
504 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
505 m_str.append (val.substr (pos, new_pos - pos));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
506
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
507 pos = new_pos + 1;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
508 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
509 }
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
510
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
511 string_array_property (const std::string& s, const graphics_handle& h,
16890
830f27544bb7 Accept char array inputs for linestyleorder property (bug #34906).
Rik <rik@octave.org>
parents: 16832
diff changeset
512 const Cell& c, const char& sep = '|',
830f27544bb7 Accept char array inputs for linestyleorder property (bug #34906).
Rik <rik@octave.org>
parents: 16832
diff changeset
513 const desired_enum& typ = string_t)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
514 : base_property (s, h), m_desired_type (typ), m_separator (sep), m_str ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
515 {
23575
e95738a119da maint: Deprecate is_cellstr and replace with iscellstr.
Rik <rik@octave.org>
parents: 23564
diff changeset
516 if (! c.iscellstr ())
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
517 error (R"(set: invalid order property value for "%s")",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
518 get_name ().c_str ());
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
519
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
520 string_vector strings (c.numel ());
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
521
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
522 for (octave_idx_type i = 0; i < c.numel (); i++)
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
523 strings[i] = c(i).string_value ();
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
524
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
525 m_str = strings;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
526 }
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
527
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
528 string_array_property (const string_array_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
529 : base_property (p), m_desired_type (p.m_desired_type),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
530 m_separator (p.m_separator), m_str (p.m_str) { }
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
531
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
532 octave_value get (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
533 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
534 if (m_desired_type == string_t)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
535 return octave_value (string_value ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
536 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
537 return octave_value (cell_value ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
538 }
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
539
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
540 std::string string_value (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
541 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
542 std::string s;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
543
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
544 for (octave_idx_type i = 0; i < m_str.numel (); i++)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
545 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
546 s += m_str[i];
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
547 if (i != m_str.numel () - 1)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
548 s += m_separator;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
549 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
550
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
551 return s;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
552 }
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
553
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
554 Cell cell_value (void) const {return Cell (m_str);}
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
555
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
556 string_vector string_vector_value (void) const { return m_str; }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
557
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
558 string_array_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
559 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
560 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
561 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
562 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
563
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
564 base_property * clone (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
565 { return new string_array_property (*this); }
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
566
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
567 protected:
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
568 bool do_set (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
569 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
570 if (val.is_string () && val.rows () == 1)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
571 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
572 bool replace = false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
573 std::string new_str = val.string_value ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
574 string_vector strings;
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
575 std::size_t pos = 0;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
576
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
577 // Split single string on delimiter (usually '|')
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
578 while (pos != std::string::npos)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
579 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
580 std::size_t new_pos = new_str.find_first_of (m_separator, pos);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
581
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
582 if (new_pos == std::string::npos)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
583 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
584 strings.append (new_str.substr (pos));
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
585 break;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
586 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
587 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
588 strings.append (new_str.substr (pos, new_pos - pos));
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
589
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
590 pos = new_pos + 1;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
591 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
592
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
593 if (m_str.numel () == strings.numel ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
594 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
595 for (octave_idx_type i = 0; i < m_str.numel (); i++)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
596 if (strings[i] != m_str[i])
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
597 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
598 replace = true;
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
599 break;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
600 }
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
601 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
602 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
603 replace = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
604
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
605 m_desired_type = string_t;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
606
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
607 if (replace)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
608 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
609 m_str = strings;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
610 return true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
611 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
612 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
613 else if (val.is_string ()) // multi-row character matrix
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
614 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
615 bool replace = false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
616 charMatrix chm = val.char_matrix_value ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
617 octave_idx_type nel = chm.rows ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
618 string_vector strings (nel);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
619
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
620 if (nel != m_str.numel ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
621 replace = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
622 for (octave_idx_type i = 0; i < nel; i++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
623 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
624 strings[i] = chm.row_as_string (i);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
625 if (! replace && strings[i] != m_str[i])
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
626 replace = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
627 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
628
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
629 m_desired_type = string_t;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
630
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
631 if (replace)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
632 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
633 m_str = strings;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
634 return true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
635 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
636 }
23575
e95738a119da maint: Deprecate is_cellstr and replace with iscellstr.
Rik <rik@octave.org>
parents: 23564
diff changeset
637 else if (val.iscellstr ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
638 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
639 bool replace = false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
640 Cell new_cell = val.cell_value ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
641
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
642 string_vector strings = new_cell.cellstr_value ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
643
20232
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20181
diff changeset
644 octave_idx_type nel = strings.numel ();
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20181
diff changeset
645
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
646 if (nel != m_str.numel ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
647 replace = true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
648 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
649 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
650 for (octave_idx_type i = 0; i < nel; i++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
651 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
652 if (strings[i] != m_str[i])
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
653 {
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
654 replace = true;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
655 break;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
656 }
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
657 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
658 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
659
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
660 m_desired_type = cell_t;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
661
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
662 if (replace)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
663 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
664 m_str = strings;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
665 return true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
666 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
667 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
668 else
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
669 error (R"(set: invalid string property value for "%s")",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
670 get_name ().c_str ());
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
671
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
672 return false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
673 }
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
674
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
675 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
676 desired_enum m_desired_type;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
677 char m_separator;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
678 string_vector m_str;
10135
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
679 };
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
680
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
681 // ---------------------------------------------------------------------
4516a0c97ced Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents: 10121
diff changeset
682
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
683 class OCTINTERP_API text_label_property : public base_property
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
684 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
685 public:
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
686 enum type { char_t, cellstr_t };
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
687
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
688 text_label_property (const std::string& s, const graphics_handle& h,
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
689 const std::string& val = "")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
690 : base_property (s, h), m_value (val), m_stored_type (char_t)
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
691 { }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
692
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
693 text_label_property (const std::string& s, const graphics_handle& h,
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
694 const NDArray& nda)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
695 : base_property (s, h), m_stored_type (char_t)
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
696 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
697 octave_idx_type nel = nda.numel ();
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
698
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
699 m_value.resize (nel);
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
700
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
701 for (octave_idx_type i = 0; i < nel; i++)
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
702 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
703 std::ostringstream buf;
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
704 buf << nda(i);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
705 m_value[i] = buf.str ();
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
706 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
707 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
708
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
709 text_label_property (const std::string& s, const graphics_handle& h,
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
710 const Cell& c)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
711 : base_property (s, h), m_stored_type (cellstr_t)
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
712 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
713 octave_idx_type nel = c.numel ();
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
714
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
715 m_value.resize (nel);
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
716
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
717 for (octave_idx_type i = 0; i < nel; i++)
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
718 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
719 octave_value tmp = c(i);
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
720
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
721 if (tmp.is_string ())
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
722 m_value[i] = c(i).string_value ();
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
723 else
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
724 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
725 double d = c(i).double_value ();
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
726
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
727 std::ostringstream buf;
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
728 buf << d;
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
729 m_value[i] = buf.str ();
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
730 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
731 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
732 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
733
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
734 text_label_property (const text_label_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
735 : base_property (p), m_value (p.m_value), m_stored_type (p.m_stored_type)
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
736 { }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
737
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12959
diff changeset
738 bool empty (void) const
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12959
diff changeset
739 {
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12959
diff changeset
740 octave_value tmp = get ();
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
741 return tmp.isempty ();
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12959
diff changeset
742 }
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12959
diff changeset
743
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
744 octave_value get (void) const
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
745 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
746 if (m_stored_type == char_t)
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
747 return octave_value (char_value ());
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
748 else
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
749 return octave_value (cell_value ());
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
750 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
751
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
752 std::string string_value (void) const
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
753 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
754 return m_value.empty () ? "" : m_value[0];
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
755 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
756
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
757 string_vector string_vector_value (void) const { return m_value; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
758
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
759 charMatrix char_value (void) const { return charMatrix (m_value, ' '); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
760
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
761 Cell cell_value (void) const {return Cell (m_value); }
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
762
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
763 text_label_property& operator = (const octave_value& val)
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
764 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
765 set (val);
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
766 return *this;
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
767 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
768
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
769 base_property * clone (void) const { return new text_label_property (*this); }
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
770
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
771 protected:
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
772
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
773 bool do_set (const octave_value& val)
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
774 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
775 if (val.is_string ())
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
776 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
777 m_value = val.string_vector_value ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
778
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
779 m_stored_type = char_t;
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
780 }
23576
00e518162fda maint: Deprecate is_cell and replace with iscell.
Rik <rik@octave.org>
parents: 23575
diff changeset
781 else if (val.iscell ())
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
782 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
783 Cell c = val.cell_value ();
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
784
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
785 octave_idx_type nel = c.numel ();
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
786
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
787 m_value.resize (nel);
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
788
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
789 for (octave_idx_type i = 0; i < nel; i++)
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
790 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
791 octave_value tmp = c(i);
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
792
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
793 if (tmp.is_string ())
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
794 m_value[i] = c(i).string_value ();
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
795 else
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
796 {
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
797 double d = c(i).double_value ();
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
798
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
799 std::ostringstream buf;
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
800 buf << d;
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
801 m_value[i] = buf.str ();
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
802 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
803 }
12965
22bc9ec80c2c allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents: 12959
diff changeset
804
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
805 m_stored_type = cellstr_t;
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
806 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
807 else
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
808 {
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
809 NDArray nda;
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
810
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
811 try
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
812 {
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
813 nda = val.array_value ();
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
814 }
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 29015
diff changeset
815 catch (octave::execution_exception& ee)
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
816 {
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 29015
diff changeset
817 error (ee, R"(set: invalid string property value for "%s")",
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
818 get_name ().c_str ());
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
819 }
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
820
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
821 octave_idx_type nel = nda.numel ();
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
822
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
823 m_value.resize (nel);
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
824
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
825 for (octave_idx_type i = 0; i < nel; i++)
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
826 {
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
827 std::ostringstream buf;
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
828 buf << nda(i);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
829 m_value[i] = buf.str ();
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
830 }
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
831
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
832 m_stored_type = char_t;
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
833 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
834
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
835 return true;
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
836 }
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
837
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
838 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
839 string_vector m_value;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
840 type m_stored_type;
12959
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
841 };
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
842
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
843 // ---------------------------------------------------------------------
0c86ae6f7c34 new text_label_property graphics property type
John W. Eaton <jwe@octave.org>
parents: 12777
diff changeset
844
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
845 class OCTINTERP_API radio_values
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
846 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
847 public:
21017
93748bcaec17 maint: Replace emtpy 'std::string ()' calls with "".
Rik <rik@octave.org>
parents: 20990
diff changeset
848 OCTINTERP_API radio_values (const std::string& opt_string = "");
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
849
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
850 radio_values (const radio_values& a)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
851 : m_default_val (a.m_default_val), m_possible_vals (a.m_possible_vals) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
852
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
853 radio_values& operator = (const radio_values& a)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
854 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
855 if (&a != this)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
856 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
857 m_default_val = a.m_default_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
858 m_possible_vals = a.m_possible_vals;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
859 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
860
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
861 return *this;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
862 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
863
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
864 std::string default_value (void) const { return m_default_val; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
865
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
866 bool validate (const std::string& val, std::string& match)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
867 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
868 bool retval = true;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
869
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
870 if (! contains (val, match))
20956
850e3d2533d4 maint: Eliminate more useless statements after error().
Rik <rik@octave.org>
parents: 20955
diff changeset
871 error ("invalid value = %s", val.c_str ());
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
872
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
873 return retval;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
874 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
875
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
876 bool contains (const std::string& val, std::string& match)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
877 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
878 std::size_t k = 0;
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
879
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
880 std::size_t len = val.length ();
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
881
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
882 std::string first_match;
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
883
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
884 for (const auto& possible_val : m_possible_vals)
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
885 {
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
886 if (possible_val.compare (val, len))
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
887 {
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
888 if (len == possible_val.length ())
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
889 {
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
890 // We found a full match (consider the case of val == "replace"
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
891 // with possible values "replace" and "replacechildren"). Any
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
892 // other matches are irrelevant, so set match and return now.
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
893 match = possible_val;
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
894 return true;
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
895 }
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
896 else
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
897 {
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
898 if (k == 0)
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
899 first_match = possible_val;
13236
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
900
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
901 k++;
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
902 }
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
903 }
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
904 }
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
905
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
906 if (k == 1)
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
907 {
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
908 match = first_match;
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
909 return true;
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
910 }
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
911 else
8bb526fb3349 allow radio values for graphics properaties to be abbreviated
John W. Eaton <jwe@octave.org>
parents: 13132
diff changeset
912 return false;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
913 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
914
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
915 OCTINTERP_API std::string values_as_string (void) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
916
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
917 OCTINTERP_API Cell values_as_cell (void) const;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
918
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
919 octave_idx_type nelem (void) const { return m_possible_vals.size (); }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
920
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
921 private:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
922 // Might also want to cache
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
923 std::string m_default_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
924 std::set<caseless_str> m_possible_vals;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
925 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
926
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
927 class OCTINTERP_API radio_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
928 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
929 public:
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
930 radio_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
931 const radio_values& v = radio_values ())
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
932 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
933 m_vals (v), m_current_val (v.default_value ()) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
934
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
935 radio_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
936 const std::string& v)
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
937 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
938 m_vals (v), m_current_val (m_vals.default_value ()) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
939
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
940 radio_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
941 const radio_values& v, const std::string& def)
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
942 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
943 m_vals (v), m_current_val (def) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
944
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
945 radio_property (const radio_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
946 : base_property (p), m_vals (p.m_vals), m_current_val (p.m_current_val) { }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
947
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
948 octave_value get (void) const { return octave_value (m_current_val); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
949
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
950 const std::string& current_value (void) const { return m_current_val; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
951
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
952 std::string values_as_string (void) const { return m_vals.values_as_string (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
953
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
954 Cell values_as_cell (void) const { return m_vals.values_as_cell (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
955
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
956 bool is (const caseless_str& v) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
957 { return v.compare (m_current_val); }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
958
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
959 bool is_radio (void) const { return true; }
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
960
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
961 radio_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
962 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
963 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
964 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
965 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
966
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
967 base_property * clone (void) const { return new radio_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
968
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
969 protected:
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
970 bool do_set (const octave_value& newval)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
971 {
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
972 if (! newval.is_string ())
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
973 error (R"(set: invalid value for radio property "%s")",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
974 get_name ().c_str ());
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
975
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
976 std::string s = newval.string_value ();
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
977
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
978 std::string match;
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
979
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
980 if (! m_vals.validate (s, match))
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
981 error (R"(set: invalid value for radio property "%s" (value = %s))",
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
982 get_name ().c_str (), s.c_str ());
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
983
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
984 if (match != m_current_val)
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
985 {
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
986 if (s.length () != match.length ())
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
987 warning_with_id ("Octave:abbreviated-property-match",
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
988 "%s: allowing %s to match %s value %s",
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
989 "set", s.c_str (), get_name ().c_str (),
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
990 match.c_str ());
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
991 m_current_val = match;
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
992 return true;
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
993 }
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
994 return false;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
995 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
996
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
997 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
998 radio_values m_vals;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
999 std::string m_current_val;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1000 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1001
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1002 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1003
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1004 class OCTINTERP_API color_values
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1005 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1006 public:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1007 color_values (double r = 0, double g = 0, double b = 1)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1008 : m_rgb (1, 3)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1009 {
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1010 m_rgb(0) = r;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1011 m_rgb(1) = g;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1012 m_rgb(2) = b;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1013
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1014 validate ();
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1015 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1016
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1017 color_values (const std::string& str)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1018 : m_rgb (1, 3)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1019 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1020 if (! str2rgb (str))
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1021 error ("invalid color specification: %s", str.c_str ());
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1022 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1023
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1024 color_values (const color_values& c)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1025 : m_rgb (c.m_rgb)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1026 { }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1027
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1028 color_values& operator = (const color_values& c)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1029 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1030 if (&c != this)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1031 m_rgb = c.m_rgb;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1032
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1033 return *this;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1034 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1035
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1036 bool operator == (const color_values& c) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1037 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1038 return (m_rgb(0) == c.m_rgb(0)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1039 && m_rgb(1) == c.m_rgb(1)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1040 && m_rgb(2) == c.m_rgb(2));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1041 }
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1042
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1043 bool operator != (const color_values& c) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1044 { return ! (*this == c); }
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1045
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1046 Matrix rgb (void) const { return m_rgb; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1047
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1048 operator octave_value (void) const { return m_rgb; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1049
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1050 void validate (void) const
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1051 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1052 for (int i = 0; i < 3; i++)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1053 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1054 if (m_rgb(i) < 0 || m_rgb(i) > 1)
20730
948f45a2931e don't check error_state after creating color object
John W. Eaton <jwe@octave.org>
parents: 20726
diff changeset
1055 error ("invalid RGB color specification");
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1056 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1057 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1058
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1059 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1060 Matrix m_rgb;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1061
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1062 OCTINTERP_API bool str2rgb (const std::string& str);
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1063 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1064
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1065 class OCTINTERP_API color_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1066 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1067 public:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1068 color_property (const color_values& c, const radio_values& v)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1069 : base_property ("", graphics_handle ()),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1070 m_current_type (color_t), m_color_val (c), m_radio_val (v),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1071 m_current_val (v.default_value ())
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1072 { }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1073
17645
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
1074 color_property (const radio_values& v, const color_values& c)
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
1075 : base_property ("", graphics_handle ()),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1076 m_current_type (radio_t), m_color_val (c), m_radio_val (v),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1077 m_current_val (v.default_value ())
17645
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
1078 { }
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
1079
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1080 color_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1081 const color_values& c = color_values (),
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1082 const radio_values& v = radio_values ())
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1083 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1084 m_current_type (color_t), m_color_val (c), m_radio_val (v),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1085 m_current_val (v.default_value ())
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1086 { }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1087
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1088 color_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1089 const radio_values& v)
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1090 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1091 m_current_type (radio_t), m_color_val (color_values ()), m_radio_val (v),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1092 m_current_val (v.default_value ())
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1093 { }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1094
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1095 color_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1096 const std::string& v)
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1097 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1098 m_current_type (radio_t), m_color_val (color_values ()), m_radio_val (v),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1099 m_current_val (m_radio_val.default_value ())
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1100 { }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1101
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1102 color_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1103 const color_property& v)
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1104 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1105 m_current_type (v.m_current_type), m_color_val (v.m_color_val),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1106 m_radio_val (v.m_radio_val), m_current_val (v.m_current_val)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1107 { }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1108
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1109 color_property (const color_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1110 : base_property (p), m_current_type (p.m_current_type),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1111 m_color_val (p.m_color_val), m_radio_val (p.m_radio_val),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1112 m_current_val (p.m_current_val) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1113
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1114 octave_value get (void) const
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1115 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1116 if (m_current_type == color_t)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1117 return m_color_val.rgb ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1118
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1119 return m_current_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1120 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1121
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1122 bool is_rgb (void) const { return (m_current_type == color_t); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1123
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1124 bool is_radio (void) const { return (m_current_type == radio_t); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1125
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1126 bool is (const std::string& v) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1127 { return (is_radio () && m_current_val == v); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1128
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1129 Matrix rgb (void) const
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1130 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1131 if (m_current_type != color_t)
20726
25d676f9619c Preface error() messages with name of function when possible.
Rik <rik@octave.org>
parents: 20711
diff changeset
1132 error ("color has no RGB value");
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1133
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1134 return m_color_val.rgb ();
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1135 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1136
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1137 const std::string& current_value (void) const
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1138 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1139 if (m_current_type != radio_t)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1140 error ("color has no radio value");
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1141
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1142 return m_current_val;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1143 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1144
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1145 color_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1146 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1147 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1148 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1149 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1150
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1151 operator octave_value (void) const { return get (); }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1152
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1153 base_property * clone (void) const { return new color_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1154
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1155 std::string values_as_string (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1156 { return m_radio_val.values_as_string (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1157
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1158 Cell values_as_cell (void) const { return m_radio_val.values_as_cell (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1159
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1160 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1161 OCTINTERP_API bool do_set (const octave_value& newval);
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1162
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1163 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1164 enum current_enum { color_t, radio_t } m_current_type;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1165 color_values m_color_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1166 radio_values m_radio_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1167 std::string m_current_val;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1168 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1169
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1170 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1171
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1172 enum finite_type
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1173 {
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1174 NO_CHECK,
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1175 FINITE,
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1176 NOT_NAN,
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1177 NOT_INF
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1178 };
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1179
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1180 class OCTINTERP_API double_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1181 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1182 public:
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1183 double_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1184 double d = 0)
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1185 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1186 m_current_val (d), m_finite_constraint (NO_CHECK),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1187 m_minval (std::pair<double, bool> (octave_NaN, true)),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1188 m_maxval (std::pair<double, bool> (octave_NaN, true)) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1189
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1190 double_property (const double_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1191 : base_property (p), m_current_val (p.m_current_val),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1192 m_finite_constraint (NO_CHECK),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1193 m_minval (std::pair<double, bool> (octave_NaN, true)),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1194 m_maxval (std::pair<double, bool> (octave_NaN, true)) { }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1195
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1196 octave_value get (void) const { return octave_value (m_current_val); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1197
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1198 double double_value (void) const { return m_current_val; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1199
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1200 double_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1201 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1202 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1203 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1204 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1205
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1206 base_property * clone (void) const
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1207 {
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1208 double_property *p = new double_property (*this);
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1209
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1210 p->m_finite_constraint = m_finite_constraint;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1211 p->m_minval = m_minval;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1212 p->m_maxval = m_maxval;
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1213
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1214 return p;
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1215 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1216
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1217 void add_constraint (const std::string& type, double val, bool inclusive)
22910
23847979b91e maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
1218 {
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1219 if (type == "min")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1220 m_minval = std::pair<double, bool> (val, inclusive);
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1221 else if (type == "max")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1222 m_maxval = std::pair<double, bool> (val, inclusive);
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1223 }
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1224
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1225 void add_constraint (const finite_type finite)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1226 { m_finite_constraint = finite; }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1227
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1228 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1229 bool do_set (const octave_value& v)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1230 {
23582
0cc2011d800e maint: Deprecate is_real_type and replace with isreal.
Rik <rik@octave.org>
parents: 23577
diff changeset
1231 if (! v.is_scalar_type () || ! v.isreal ())
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
1232 error (R"(set: invalid value for double property "%s")",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1233 get_name ().c_str ());
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
1234
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
1235 double new_val = v.double_value ();
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
1236
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1237 // Check min and max
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1238 if (! octave::math::isnan (m_minval.first))
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1239 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1240 if (m_minval.second && m_minval.first > new_val)
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
1241 error (R"(set: "%s" must be greater than or equal to %g)",
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1242 get_name ().c_str (), m_minval.first);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1243 else if (! m_minval.second && m_minval.first >= new_val)
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
1244 error (R"(set: "%s" must be greater than %g)",
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1245 get_name ().c_str (), m_minval.first);
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1246 }
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1247
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1248 if (! octave::math::isnan (m_maxval.first))
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1249 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1250 if (m_maxval.second && m_maxval.first < new_val)
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
1251 error (R"(set: "%s" must be less than or equal to %g)",
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1252 get_name ().c_str (), m_maxval.first);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1253 else if (! m_maxval.second && m_maxval.first <= new_val)
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
1254 error (R"(set: "%s" must be less than %g)",
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1255 get_name ().c_str (), m_maxval.first);
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1256 }
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1257
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1258 if (m_finite_constraint == NO_CHECK) { /* do nothing */ }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1259 else if (m_finite_constraint == FINITE)
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1260 {
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1261 if (! octave::math::isfinite (new_val))
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1262 error (R"(set: "%s" must be finite)", get_name ().c_str ());
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1263 }
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1264 else if (m_finite_constraint == NOT_NAN)
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1265 {
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1266 if (octave::math::isnan (new_val))
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1267 error (R"(set: "%s" must not be nan)", get_name ().c_str ());
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1268 }
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1269 else if (m_finite_constraint == NOT_INF)
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1270 {
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1271 if (octave::math::isinf (new_val))
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1272 error (R"(set: "%s" must not be infinite)", get_name ().c_str ());
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1273 }
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1274
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1275 if (new_val != m_current_val)
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
1276 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1277 m_current_val = new_val;
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
1278 return true;
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
1279 }
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
1280
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1281 return false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1282 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1283
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1284 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1285 double m_current_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1286 finite_type m_finite_constraint;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1287 std::pair<double, bool> m_minval, m_maxval;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1288 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1289
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1290 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1291
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1292 class OCTINTERP_API double_radio_property : public base_property
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1293 {
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1294 public:
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1295 double_radio_property (double d, const radio_values& v)
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17646
diff changeset
1296 : base_property ("", graphics_handle ()),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1297 m_current_type (double_t), m_dval (d), m_radio_val (v),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1298 m_current_val (v.default_value ())
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1299 { }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1300
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1301 double_radio_property (const std::string& nm, const graphics_handle& h,
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
1302 const std::string& v)
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17646
diff changeset
1303 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1304 m_current_type (radio_t), m_dval (0), m_radio_val (v),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1305 m_current_val (m_radio_val.default_value ())
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1306 { }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1307
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1308 double_radio_property (const std::string& nm, const graphics_handle& h,
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
1309 const double_radio_property& v)
17652
57750dc54ab6 maint: Correct indentation in graphics.cc, graphics.in.h. No code changes.
Rik <rik@octave.org>
parents: 17646
diff changeset
1310 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1311 m_current_type (v.m_current_type), m_dval (v.m_dval),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1312 m_radio_val (v.m_radio_val), m_current_val (v.m_current_val)
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1313 { }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1314
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1315 double_radio_property (const double_radio_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1316 : base_property (p), m_current_type (p.m_current_type),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1317 m_dval (p.m_dval), m_radio_val (p.m_radio_val),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1318 m_current_val (p.m_current_val) { }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1319
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1320 octave_value get (void) const
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1321 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1322 if (m_current_type == double_t)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1323 return m_dval;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1324
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1325 return m_current_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1326 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1327
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1328 bool is_double (void) const { return (m_current_type == double_t); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1329
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1330 bool is_radio (void) const { return (m_current_type == radio_t); }
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1331
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1332 bool is (const std::string& v) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1333 { return (is_radio () && m_current_val == v); }
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1334
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1335 double double_value (void) const
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1336 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1337 if (m_current_type != double_t)
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1338 error ("%s: property has no double", get_name ().c_str ());
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1339
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1340 return m_dval;
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1341 }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1342
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1343 const std::string& current_value (void) const
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1344 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1345 if (m_current_type != radio_t)
26107
05dfcb24ef12 Supply missing arguments to variable length *printf functions (bug #55046).
Rik <rik@octave.org>
parents: 26055
diff changeset
1346 error ("%s: property has no radio value", get_name ().c_str ());
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1347
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1348 return m_current_val;
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1349 }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1350
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1351 double_radio_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1352 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1353 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1354 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1355 }
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1356
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1357 operator octave_value (void) const { return get (); }
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1358
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1359 base_property * clone (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1360 { return new double_radio_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1361
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1362 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1363 OCTINTERP_API bool do_set (const octave_value& v);
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1364
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1365 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1366 enum current_enum { double_t, radio_t } m_current_type;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1367 double m_dval;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1368 radio_values m_radio_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1369 std::string m_current_val;
7844
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1370 };
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1371
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1372 // ---------------------------------------------------------------------
3d60445d3638 Add new double_radio_property class for alpha values.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7842
diff changeset
1373
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1374 class OCTINTERP_API array_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1375 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1376 public:
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
1377 array_property (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1378 : base_property ("", graphics_handle ()), m_data (Matrix ()),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1379 m_min_val (), m_max_val (), m_min_pos (), m_max_neg (),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1380 m_type_constraints (), m_size_constraints (), m_finite_constraint (NO_CHECK),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1381 m_minval (std::pair<double, bool> (octave_NaN, true)),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1382 m_maxval (std::pair<double, bool> (octave_NaN, true))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1383 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1384 get_data_limits ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1385 }
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
1386
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1387 array_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1388 const octave_value& m)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1389 : base_property (nm, h), m_data (m.issparse () ? m.full_value () : m),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1390 m_min_val (), m_max_val (), m_min_pos (), m_max_neg (),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1391 m_type_constraints (), m_size_constraints (), m_finite_constraint (NO_CHECK),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1392 m_minval (std::pair<double, bool> (octave_NaN, true)),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1393 m_maxval (std::pair<double, bool> (octave_NaN, true))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1394 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1395 get_data_limits ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1396 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1397
7848
6bb2bbc2bf45 Remove data_property, replace with array_property or row_vector_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7847
diff changeset
1398 // This copy constructor is only intended to be used
6bb2bbc2bf45 Remove data_property, replace with array_property or row_vector_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7847
diff changeset
1399 // internally to access min/max values; no need to
6bb2bbc2bf45 Remove data_property, replace with array_property or row_vector_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7847
diff changeset
1400 // copy constraints.
6bb2bbc2bf45 Remove data_property, replace with array_property or row_vector_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7847
diff changeset
1401 array_property (const array_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1402 : base_property (p), m_data (p.m_data),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1403 m_min_val (p.m_min_val), m_max_val (p.m_max_val), m_min_pos (p.m_min_pos), m_max_neg (p.m_max_neg),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1404 m_type_constraints (), m_size_constraints (), m_finite_constraint (NO_CHECK),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1405 m_minval (std::pair<double, bool> (octave_NaN, true)),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1406 m_maxval (std::pair<double, bool> (octave_NaN, true))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1407 { }
7848
6bb2bbc2bf45 Remove data_property, replace with array_property or row_vector_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7847
diff changeset
1408
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1409 octave_value get (void) const { return m_data; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1410
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1411 void add_constraint (const std::string& type)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1412 { m_type_constraints.insert (type); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1413
7524
a653856aa3e1 array_value::add_constraint: pass dim_vector as const reference, not value
John W. Eaton <jwe@octave.org>
parents: 7523
diff changeset
1414 void add_constraint (const dim_vector& dims)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1415 { m_size_constraints.push_back (dims); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1416
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1417 void add_constraint (const finite_type finite)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1418 { m_finite_constraint = finite; }
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1419
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1420 void add_constraint (const std::string& type, double val, bool inclusive)
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1421 {
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1422 if (type == "min")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1423 m_minval = std::pair<double, bool> (val, inclusive);
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1424 else if (type == "max")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1425 m_maxval = std::pair<double, bool> (val, inclusive);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1426 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1427
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1428 double min_val (void) const { return m_min_val; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1429 double max_val (void) const { return m_max_val; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1430 double min_pos (void) const { return m_min_pos; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1431 double max_neg (void) const { return m_max_neg; }
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
1432
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
1433 Matrix get_limits (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1434 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1435 Matrix m (1, 4);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1436
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1437 m(0) = min_val ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1438 m(1) = max_val ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1439 m(2) = min_pos ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1440 m(3) = max_neg ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1441
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1442 return m;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1443 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
1444
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1445 array_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1446 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1447 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1448 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1449 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1450
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1451 base_property * clone (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1452 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1453 array_property *p = new array_property (*this);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1454
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1455 p->m_type_constraints = m_type_constraints;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1456 p->m_size_constraints = m_size_constraints;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1457 p->m_finite_constraint = m_finite_constraint;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1458 p->m_minval = m_minval;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1459 p->m_maxval = m_maxval;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1460
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1461 return p;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1462 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1463
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1464 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1465 bool do_set (const octave_value& v)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1466 {
23583
b7747a2c88b2 maint: Deprecate is_sparse_type and replace with issparse.
Rik <rik@octave.org>
parents: 23582
diff changeset
1467 octave_value tmp = (v.issparse () ? v.full_value () : v);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1468
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1469 if (! validate (tmp))
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
1470 error (R"(invalid value for array property "%s")",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1471 get_name ().c_str ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1472
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1473 // FIXME: should we check for actual data change?
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1474 if (! is_equal (tmp))
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1475 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1476 m_data = tmp;
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1477
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1478 get_data_limits ();
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1479
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1480 return true;
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1481 }
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1482
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1483 return false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1484 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1485
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1486 private:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1487 OCTINTERP_API bool validate (const octave_value& v);
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1488
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1489 OCTINTERP_API bool is_equal (const octave_value& v) const;
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1490
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
1491 OCTINTERP_API void 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
1492
7523
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1493 protected:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1494 octave_value m_data;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1495 double m_min_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1496 double m_max_val;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1497 double m_min_pos;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1498 double m_max_neg;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1499 std::set<std::string> m_type_constraints;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1500 std::list<dim_vector> m_size_constraints;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1501 finite_type m_finite_constraint;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1502 std::pair<double, bool> m_minval, m_maxval;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1503 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1504
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1505 class OCTINTERP_API row_vector_property : public array_property
7523
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1506 {
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1507 public:
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1508 row_vector_property (const std::string& nm, const graphics_handle& h,
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
1509 const octave_value& m)
7527
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1510 : array_property (nm, h, m)
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1511 {
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1512 add_constraint (dim_vector (-1, 1));
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1513 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: 17625
diff changeset
1514 add_constraint (dim_vector (0, 0));
7527
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1515 }
7523
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1516
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1517 row_vector_property (const row_vector_property& p)
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1518 : array_property (p)
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1519 {
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1520 add_constraint (dim_vector (-1, 1));
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1521 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: 17625
diff changeset
1522 add_constraint (dim_vector (0, 0));
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1523 }
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1524
7527
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1525 void add_constraint (const std::string& type)
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1526 {
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1527 array_property::add_constraint (type);
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1528 }
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1529
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1530 void add_constraint (const dim_vector& dims)
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1531 {
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1532 array_property::add_constraint (dims);
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1533 }
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1534
23124
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1535 void add_constraint (const finite_type finite)
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1536 {
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1537 array_property::add_constraint (finite);
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1538 }
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1539
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1540 void add_constraint (const std::string& type, double val, bool inclusive)
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1541 {
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1542 array_property::add_constraint (type, val, inclusive);
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1543 }
9e54152e382b Add new types of constraints for graphics properties (bug #50041).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23116
diff changeset
1544
7527
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1545 void add_constraint (octave_idx_type len)
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1546 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1547 m_size_constraints.remove (dim_vector (1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1548 m_size_constraints.remove (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1549 m_size_constraints.remove (dim_vector (0, 0));
7527
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1550
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1551 add_constraint (dim_vector (1, len));
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1552 add_constraint (dim_vector (len, 1));
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1553 }
7523
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1554
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1555 row_vector_property& operator = (const octave_value& val)
7527
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1556 {
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1557 set (val);
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1558 return *this;
d219e712c20e make row_vector_property work?
John W. Eaton <jwe@octave.org>
parents: 7526
diff changeset
1559 }
7523
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1560
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1561 base_property * clone (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1562 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1563 row_vector_property *p = new row_vector_property (*this);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1564
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1565 p->m_type_constraints = m_type_constraints;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1566 p->m_size_constraints = m_size_constraints;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1567 p->m_finite_constraint = m_finite_constraint;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1568 p->m_minval = m_minval;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1569 p->m_maxval = m_maxval;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1570
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1571 return p;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1572 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1573
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1574 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1575 bool do_set (const octave_value& v)
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1576 {
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1577 bool retval = array_property::do_set (v);
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1578
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1579 dim_vector dv = m_data.dims ();
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1580
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1581 if (dv(0) > 1 && dv(1) == 1)
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1582 {
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1583 int tmp = dv(0);
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1584 dv(0) = dv(1);
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1585 dv(1) = tmp;
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1586
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1587 m_data = m_data.reshape (dv);
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1588 }
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1589
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1590 return retval;
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1591 }
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1592
7523
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1593 private:
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1594 OCTINTERP_API bool validate (const octave_value& v);
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1595 };
f2000f1971ab new row_vector_property class
John W. Eaton <jwe@octave.org>
parents: 7471
diff changeset
1596
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1597 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1598
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1599 class OCTINTERP_API bool_property : public radio_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1600 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1601 public:
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1602 bool_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1603 bool val)
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1604 : radio_property (nm, h, radio_values (val ? "{on}|off" : "on|{off}"))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1605 { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1606
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1607 bool_property (const std::string& nm, const graphics_handle& h,
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1608 const char *val)
24687
8b935067a257 Allow printing without updating qt visible or invisible figures (bug #52940).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24637
diff changeset
1609 : radio_property (nm, h, radio_values (std::string (val) == "on" ?
24635
b708857d634e Correctly display boolean properties default values (bug #52768)
Sahil Yadav <yadavsahil5198@gmail.com>
parents: 24534
diff changeset
1610 "{on}|off" : "on|{off}"), val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1611 { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1612
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1613 bool_property (const bool_property& p)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1614 : radio_property (p) { }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1615
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1616 bool is_on (void) const { return is ("on"); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1617
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1618 bool_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1619 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1620 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1621 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1622 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1623
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1624 base_property * clone (void) const { return new bool_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1625
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1626 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1627 bool do_set (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1628 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1629 if (val.is_bool_scalar ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1630 return radio_property::do_set (val.bool_value () ? "on" : "off");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1631 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1632 return radio_property::do_set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1633 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1634 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1635
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1636 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1637
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1638 class OCTINTERP_API handle_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1639 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1640 public:
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1641 handle_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1642 const graphics_handle& val = graphics_handle ())
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1643 : base_property (nm, h),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1644 m_current_val (val) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1645
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1646 handle_property (const handle_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1647 : base_property (p), m_current_val (p.m_current_val) { }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1648
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1649 octave_value get (void) const { return m_current_val.as_octave_value (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1650
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1651 graphics_handle handle_value (void) const { return m_current_val; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1652
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1653 handle_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1654 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1655 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1656 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1657 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1658
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1659 handle_property& operator = (const graphics_handle& h)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1660 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1661 set (octave_value (h.value ()));
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1662 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1663 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1664
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
1665 void invalidate (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1666 { m_current_val = octave::numeric_limits<double>::NaN (); }
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
1667
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1668 base_property * clone (void) const { return new handle_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1669
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1670 void add_constraint (const std::string& type)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1671 { m_type_constraints.insert (type); }
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
1672
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1673 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1674 OCTINTERP_API bool do_set (const octave_value& v);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1675 std::set<std::string> m_type_constraints;
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1676
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1677 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1678 graphics_handle m_current_val;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1679 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1680
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1681 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1682
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1683 class OCTINTERP_API any_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1684 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1685 public:
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1686 any_property (const std::string& nm, const graphics_handle& h,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1687 const octave_value& m = Matrix ())
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1688 : base_property (nm, h), m_data (m) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1689
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1690 any_property (const any_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1691 : base_property (p), m_data (p.m_data) { }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1692
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1693 octave_value get (void) const { return m_data; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1694
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1695 any_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1696 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1697 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1698 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1699 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1700
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1701 base_property * clone (void) const { return new any_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1702
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1703 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1704 bool do_set (const octave_value& v)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1705 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1706 m_data = v;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1707 return true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1708 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1709
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1710 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1711 octave_value m_data;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1712 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1713
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1714 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1715
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1716 class OCTINTERP_API children_property : public base_property
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1717 {
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1718 public:
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1719 children_property (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1720 : base_property ("", graphics_handle ()), m_children_list ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1721 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1722 do_init_children (Matrix ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1723 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1724
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1725 children_property (const std::string& nm, const graphics_handle& h,
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1726 const Matrix& val)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1727 : base_property (nm, h), m_children_list ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1728 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1729 do_init_children (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1730 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1731
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1732 children_property (const children_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1733 : base_property (p), m_children_list ()
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1734 {
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1735 do_init_children (p.m_children_list);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1736 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1737
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1738 children_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1739 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1740 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1741 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1742 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1743
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1744 base_property * clone (void) const { return new children_property (*this); }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1745
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1746 bool remove_child (double val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1747 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1748 return do_remove_child (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1749 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1750
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1751 void adopt (double val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1752 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1753 do_adopt_child (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1754 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1755
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1756 Matrix get_children (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1757 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1758 return do_get_children (false);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1759 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1760
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1761 Matrix get_hidden (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1762 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1763 return do_get_children (true);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1764 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1765
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1766 Matrix get_all (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1767 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1768 return do_get_all_children ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1769 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1770
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1771 octave_value get (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1772 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1773 return octave_value (get_children ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1774 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1775
26930
ead8f91c5556 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26918
diff changeset
1776 void delete_children (bool clear = false, bool from_root = false)
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
1777 {
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
1778 do_delete_children (clear, from_root);
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
1779 }
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
1780
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
1781 void renumber (graphics_handle old_gh, graphics_handle new_gh)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1782 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1783 for (auto& hchild : m_children_list)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1784 {
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
1785 if (hchild == old_gh)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1786 {
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
1787 hchild = new_gh.value ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1788 return;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1789 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1790 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1791
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1792 error ("children_list::renumber: child not found!");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1793 }
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
1794
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1795 private:
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1796 typedef std::list<double>::iterator children_list_iterator;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1797 typedef std::list<double>::const_iterator const_children_list_iterator;
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1798 std::list<double> m_children_list;
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1799
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1800 protected:
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1801 bool do_set (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1802 {
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1803 Matrix new_kids;
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1804
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1805 try
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1806 {
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1807 new_kids = val.matrix_value ();
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1808 }
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 29015
diff changeset
1809 catch (octave::execution_exception& ee)
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1810 {
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 29015
diff changeset
1811 error (ee, "set: children must be an array of graphics handles");
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1812 }
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1813
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1814 octave_idx_type nel = new_kids.numel ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1815
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1816 const Matrix new_kids_column = new_kids.reshape (dim_vector (nel, 1));
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1817
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1818 bool is_ok = true;
19678
c17e1cefdbd3 Fix reordering graphics property children for hidden objects (bug #44211)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19666
diff changeset
1819 bool add_hidden = true;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1820
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1821 const Matrix visible_kids = do_get_children (false);
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1822
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1823 if (visible_kids.numel () == new_kids.numel ())
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1824 {
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1825 Matrix t1 = visible_kids.sort ();
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1826 Matrix t2 = new_kids_column.sort ();
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1827 Matrix t3 = get_hidden ().sort ();
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1828
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1829 if (t1 != t2)
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1830 is_ok = false;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1831
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1832 if (t1 == t3)
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1833 add_hidden = false;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1834 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1835 else
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1836 is_ok = false;
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1837
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1838 if (! is_ok)
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
1839 error ("set: new children must be a permutation of existing children");
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1840
26383
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1841 Matrix tmp = new_kids_column;
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1842
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1843 if (add_hidden)
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1844 tmp.stack (get_hidden ());
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1845
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1846 m_children_list.clear ();
26383
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1847
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1848 // Don't use do_init_children here, as that reverses the
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1849 // order of the list, and we don't want to do that if setting
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1850 // the child list directly.
5455de7c8566 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
1851 for (octave_idx_type i = 0; i < tmp.numel (); i++)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1852 m_children_list.push_back (tmp.xelem (i));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1853
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1854 return is_ok;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1855 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1856
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1857 private:
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1858 void do_init_children (const Matrix& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1859 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1860 m_children_list.clear ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1861 for (octave_idx_type i = 0; i < val.numel (); i++)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1862 m_children_list.push_front (val.xelem (i));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1863 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1864
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1865 void do_init_children (const std::list<double>& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1866 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1867 m_children_list.clear ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1868 m_children_list = val;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1869 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1870
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1871 OCTINTERP_API Matrix do_get_children (bool return_hidden) const;
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1872
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1873 Matrix do_get_all_children (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1874 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1875 Matrix retval (m_children_list.size (), 1);
21568
3d60ed163b70 maint: Eliminate bad spacing around '='.
Rik <rik@octave.org>
parents: 21562
diff changeset
1876 octave_idx_type i = 0;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1877
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1878 for (const auto& hchild : m_children_list)
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
1879 retval(i++) = hchild;
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
1880
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1881 return retval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1882 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1883
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1884 bool do_remove_child (double child)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1885 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1886 for (auto it = m_children_list.begin (); it != m_children_list.end (); it++)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1887 {
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
1888 if (*it == child)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1889 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1890 m_children_list.erase (it);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1891 return true;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1892 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1893 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1894 return false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1895 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1896
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
1897 void do_adopt_child (double val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1898 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1899 m_children_list.push_front (val);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1900 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
1901
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
1902 void do_delete_children (bool clear, bool from_root);
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1903 };
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1904
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1905 // ---------------------------------------------------------------------
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
1906
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1907 class OCTINTERP_API callback_property : public base_property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1908 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1909 public:
7364
0e07f78369d1 [project @ 2008-01-12 08:38:17 by jwe]
jwe
parents: 7363
diff changeset
1910 callback_property (const std::string& nm, const graphics_handle& h,
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1911 const octave_value& m)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1912 : base_property (nm, h), m_callback (m) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1913
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1914 callback_property (const callback_property& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1915 : base_property (p), m_callback (p.m_callback) { }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1916
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1917 octave_value get (void) const { return m_callback; }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1918
7367
600808df131c [project @ 2008-01-14 08:58:02 by jwe]
jwe
parents: 7366
diff changeset
1919 OCTINTERP_API void execute (const octave_value& data = octave_value ()) const;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1920
10517
9cdd6c8c05a4 [mq]: fltk_cb
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10505
diff changeset
1921 bool is_defined (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1922 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1923 return (m_callback.is_defined () && ! m_callback.isempty ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1924 }
10517
9cdd6c8c05a4 [mq]: fltk_cb
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10505
diff changeset
1925
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1926 callback_property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1927 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1928 set (val);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1929 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1930 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1931
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
1932 base_property * clone (void) const { return new callback_property (*this); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
1933
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1934 protected:
8063
41bc700ff642 Trigger actions/listeners only for actual property change
Michael Goffioul
parents: 8061
diff changeset
1935 bool do_set (const octave_value& v)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1936 {
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1937 if (! validate (v))
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23795
diff changeset
1938 error (R"(invalid value for callback property "%s")",
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1939 get_name ().c_str ());
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1940
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1941 m_callback = v;
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
1942 return true;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1943 return false;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1944 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
1945
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1946 private:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1947 OCTINTERP_API bool validate (const octave_value& v) const;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1948
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1949 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1950 octave_value m_callback;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1951 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1952
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1953 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1954
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
1955 class OCTINTERP_API property
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1956 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1957 public:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1958 property (void) : m_rep (new base_property ("", graphics_handle ()))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1959 { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1960
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1961 property (base_property *bp, bool persist = false) : m_rep (bp)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1962 { if (persist) m_rep->m_count++; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1963
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1964 property (const property& p) : m_rep (p.m_rep)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1965 {
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1966 m_rep->m_count++;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1967 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1968
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1969 ~property (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1970 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1971 if (--m_rep->m_count == 0)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1972 delete m_rep;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1973 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1974
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1975 bool ok (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1976 { return m_rep->ok (); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1977
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1978 std::string get_name (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1979 { return m_rep->get_name (); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1980
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1981 void set_name (const std::string& name)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1982 { m_rep->set_name (name); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1983
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1984 graphics_handle get_parent (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1985 { return m_rep->get_parent (); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1986
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1987 void set_parent (const graphics_handle& h)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1988 { m_rep->set_parent (h); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1989
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1990 bool is_hidden (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1991 { return m_rep->is_hidden (); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1992
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1993 void set_hidden (bool flag)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1994 { m_rep->set_hidden (flag); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
1995
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
1996 bool is_radio (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
1997 { return m_rep->is_radio (); }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
1998
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
1999 int get_id (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2000 { return m_rep->get_id (); }
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2001
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2002 void set_id (int d)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2003 { m_rep->set_id (d); }
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
2004
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2005 octave_value get (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2006 { return m_rep->get (); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2007
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2008 bool set (const octave_value& val, bool do_run = true,
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2009 bool do_notify_toolkit = true)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2010 { return m_rep->set (val, do_run, do_notify_toolkit); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2011
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2012 std::string values_as_string (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2013 { return m_rep->values_as_string (); }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2014
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2015 Cell values_as_cell (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2016 { return m_rep->values_as_cell (); }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2017
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2018 property& operator = (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2019 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2020 *m_rep = val;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2021 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2022 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2023
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2024 property& operator = (const property& p)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2025 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2026 if (m_rep && --m_rep->m_count == 0)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2027 delete m_rep;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2028
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2029 m_rep = p.m_rep;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2030 m_rep->m_count++;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2031
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2032 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2033 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2034
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2035 void add_listener (const octave_value& v, listener_mode mode = GCB_POSTSET)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2036 { m_rep->add_listener (v, mode); }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2037
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2038 void delete_listener (const octave_value& v = octave_value (),
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2039 listener_mode mode = GCB_POSTSET)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2040 { m_rep->delete_listener (v, mode); }
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
2041
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2042 void run_listeners (listener_mode mode = GCB_POSTSET)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2043 { m_rep->run_listeners (mode); }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2044
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2045 static OCTINTERP_API property
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2046 create (const std::string& name, const graphics_handle& parent,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2047 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
2048
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
2049 property clone (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2050 { return property (m_rep->clone ()); }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
2051
20946
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20893
diff changeset
2052 #if 0
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2053 const string_property& as_string_property (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2054 { return *(dynamic_cast<string_property *> (m_rep)); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2055
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2056 const radio_property& as_radio_property (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2057 { return *(dynamic_cast<radio_property *> (m_rep)); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2058
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2059 const color_property& as_color_property (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2060 { return *(dynamic_cast<color_property *> (m_rep)); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2061
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2062 const double_property& as_double_property (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2063 { return *(dynamic_cast<double_property *> (m_rep)); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2064
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2065 const bool_property& as_bool_property (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2066 { return *(dynamic_cast<bool_property *> (m_rep)); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2067
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2068 const handle_property& as_handle_property (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2069 { return *(dynamic_cast<handle_property *> (m_rep)); }
20946
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20893
diff changeset
2070 #endif
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2071
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2072 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2073 base_property *m_rep;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2074 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2075
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2076 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2077
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
2078 typedef std::pair<std::string, octave_value> pval_pair;
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
2079
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2080 class OCTINTERP_API pval_vector : public std::vector<pval_pair>
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2081 {
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
2082 public:
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2083 const_iterator find (const std::string pname) const
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2084 {
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2085 const_iterator it;
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2086
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2087 for (it = (*this).begin (); it != (*this).end (); it++)
21021
a5b99b09f8fd maint: Use comparison operators rather than compare() for strings.
Rik <rik@octave.org>
parents: 21017
diff changeset
2088 if (pname == (*it).first)
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2089 return it;
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2090
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2091 return (*this).end ();
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2092 }
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2093
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2094 iterator find (const std::string pname)
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2095 {
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2096 iterator it;
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2097
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2098 for (it = (*this).begin (); it != (*this).end (); it++)
21021
a5b99b09f8fd maint: Use comparison operators rather than compare() for strings.
Rik <rik@octave.org>
parents: 21017
diff changeset
2099 if (pname == (*it).first)
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2100 return it;
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2101
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2102 return (*this).end ();
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2103 }
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2104
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2105 octave_value lookup (const std::string pname) const
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2106 {
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2107 octave_value retval;
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2108
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2109 const_iterator it = find (pname);
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2110
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2111 if (it != (*this).end ())
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
2112 retval = (*it).second;
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2113
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2114 return retval;
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2115 }
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2116
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2117 octave_value& operator [] (const std::string pname)
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2118 {
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2119 iterator it = find (pname);
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2120
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2121 if (it == (*this).end ())
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2122 {
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2123 push_back (pval_pair (pname, octave_value ()));
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2124 return (*this).back ().second;
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2125 }
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2126
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2127 return (*it).second;
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2128 }
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2129
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2130 void erase (const std::string pname)
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2131 {
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2132 iterator it = find (pname);
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2133 if (it != (*this).end ())
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2134 erase (it);
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2135 }
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2136
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2137 void erase (iterator it)
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2138 {
21880
a6952c880cec maint: Use 'auto' in graphics.cc, graphics.in.h files.
Rik <rik@octave.org>
parents: 21824
diff changeset
2139 std::vector<pval_pair>::erase (it);
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2140 }
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2141
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2142 };
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2143
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2144 class OCTINTERP_API property_list
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2145 {
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2146 public:
19086
dc88c5784f74 Respect the order in which default graphics properties are set (bug #38449)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19047
diff changeset
2147 typedef pval_vector pval_map_type;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2148 typedef std::map<std::string, pval_map_type> plist_map_type;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2149
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2150 typedef pval_map_type::iterator pval_map_iterator;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2151 typedef pval_map_type::const_iterator pval_map_const_iterator;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2152
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2153 typedef plist_map_type::iterator plist_map_iterator;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2154 typedef plist_map_type::const_iterator plist_map_const_iterator;
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2155
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2156 property_list (const plist_map_type& m = plist_map_type ())
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2157 : m_plist_map (m) { }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2158
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
2159 ~property_list (void) = default;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2160
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2161 OCTINTERP_API void set (const caseless_str& name, const octave_value& val);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2162
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2163 OCTINTERP_API octave_value lookup (const caseless_str& name) const;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2164
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2165 plist_map_iterator begin (void) { return m_plist_map.begin (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2166 plist_map_const_iterator begin (void) const { return m_plist_map.begin (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2167
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2168 plist_map_iterator end (void) { return m_plist_map.end (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2169 plist_map_const_iterator end (void) const { return m_plist_map.end (); }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2170
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2171 plist_map_iterator find (const std::string& go_name)
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2172 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2173 return m_plist_map.find (go_name);
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2174 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2175
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2176 plist_map_const_iterator find (const std::string& go_name) const
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2177 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2178 return m_plist_map.find (go_name);
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2179 }
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2180
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2181 OCTINTERP_API octave_scalar_map
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2182 as_struct (const std::string& prefix_arg) const;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2183
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2184 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2185 plist_map_type m_plist_map;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2186 };
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2187
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2188 // ---------------------------------------------------------------------
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2189
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2190 class base_graphics_object;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2191 class graphics_object;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2192
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
2193 class OCTINTERP_API base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2194 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2195 public:
7176
6525eb2fba0f [project @ 2007-11-14 20:42:06 by jwe]
jwe
parents: 7168
diff changeset
2196 base_properties (const std::string& ty = "unknown",
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2197 const graphics_handle& mh = graphics_handle (),
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2198 const graphics_handle& p = graphics_handle ());
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2199
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
2200 virtual ~base_properties (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2201
17625
bd1dd30ed202 graphics.in.h: Correct bad spelling of "unknown" in graphics_object_name().
Rik <rik@octave.org>
parents: 17544
diff changeset
2202 virtual std::string graphics_object_name (void) const { return "unknown"; }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2203
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2204 OCTINTERP_API void mark_modified (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2205
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2206 OCTINTERP_API void override_defaults (base_graphics_object& obj);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2207
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
2208 virtual void init_integerhandle (const octave_value&)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2209 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2210 panic_impossible ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2211 }
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
2212
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2213 // Look through DEFAULTS for properties with given CLASS_NAME, and
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2214 // apply them to the current object with set (virtual method).
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2215
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2216 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2217 set_from_list (base_graphics_object& obj, property_list& defaults);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2218
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2219 void insert_property (const std::string& name, property p)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2220 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2221 p.set_name (name);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2222 p.set_parent (m___myhandle__);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2223 m_all_props[name] = p;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2224 }
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2225
9972
d32a6cc0193b unshare dynamic properties
John W. Eaton <jwe@octave.org>
parents: 9815
diff changeset
2226 virtual void set (const caseless_str&, const octave_value&);
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9004
diff changeset
2227
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9004
diff changeset
2228 virtual octave_value get (const caseless_str& pname) const;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2229
9616
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2230 virtual octave_value get (const std::string& pname) const
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2231 {
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2232 return get (caseless_str (pname));
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2233 }
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2234
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2235 virtual octave_value get (const char *pname) const
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2236 {
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2237 return get (caseless_str (pname));
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2238 }
2093499ec9f4 avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents: 9585
diff changeset
2239
7379
a78c7bccda91 [project @ 2008-01-15 18:42:29 by jwe]
jwe
parents: 7377
diff changeset
2240 virtual octave_value get (bool all = false) const;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2241
28346
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2242 // FIXME: It seems like this function should be const, but that is
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2243 // currently not possible with the way that properties are stored as
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2244 // specific types in the graphics_object classes.
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9004
diff changeset
2245 virtual property get_property (const caseless_str& pname);
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9004
diff changeset
2246
9585
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
2247 virtual bool has_property (const caseless_str&) const
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
2248 {
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
2249 panic_impossible ();
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
2250 return false;
06b8b51dca48 also handle user-defined graphics properties in new property name validation scheme
John W. Eaton <jwe@octave.org>
parents: 9582
diff changeset
2251 }
7864
56f781f38f0b Add dynamic property creation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7862
diff changeset
2252
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2253 bool is_modified (void) const { return is___modified__ (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2254
26930
ead8f91c5556 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26918
diff changeset
2255 virtual void remove_child (const graphics_handle& h, bool = false)
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2256 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2257 if (m_children.remove_child (h.value ()))
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2258 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2259 m_children.run_listeners ();
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2260 mark_modified ();
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2261 }
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2262 }
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2263
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2264 virtual void adopt (const graphics_handle& h)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2265 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2266 m_children.adopt (h.value ());
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2267 m_children.run_listeners ();
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
2268 mark_modified ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2269 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2270
27734
a9780be9ecbc move graphics_toolkit class inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27730
diff changeset
2271 virtual octave::graphics_toolkit get_toolkit (void) const;
7419
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7408
diff changeset
2272
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2273 virtual Matrix
20946
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20893
diff changeset
2274 get_boundingbox (bool /* finternal */ = false,
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20893
diff changeset
2275 const Matrix& /* parent_pix_size */ = Matrix ()) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2276 { return Matrix (1, 4, 0.0); }
7447
25018e35b4cb [project @ 2008-02-05 22:38:57 by jwe]
jwe
parents: 7446
diff changeset
2277
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
2278 virtual void 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
2279
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
2280 virtual void update_autopos (const std::string& elem_type);
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
2281
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2282 virtual void add_listener (const caseless_str&, const octave_value&,
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2283 listener_mode = GCB_POSTSET);
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2284
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
2285 virtual void delete_listener (const caseless_str&, const octave_value&,
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2286 listener_mode = GCB_POSTSET);
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
2287
27698
f65b1666e650 don't notify toolkit when setting beingdeleted property (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27682
diff changeset
2288 void set_beingdeleted (const octave_value& val)
f65b1666e650 don't notify toolkit when setting beingdeleted property (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27682
diff changeset
2289 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2290 m_beingdeleted.set (val, true, false);
29014
df307ee1fb30 Don't rely on graphics_objects destructor being executed synchronously (bug #53513).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 28346
diff changeset
2291 update_beingdeleted ();
27698
f65b1666e650 don't notify toolkit when setting beingdeleted property (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27682
diff changeset
2292 }
f65b1666e650 don't notify toolkit when setting beingdeleted property (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27682
diff changeset
2293
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2294 void set_tag (const octave_value& val) { m_tag = val; }
7176
6525eb2fba0f [project @ 2007-11-14 20:42:06 by jwe]
jwe
parents: 7168
diff changeset
2295
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2296 OCTINTERP_API void set_parent (const octave_value& val);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2297
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2298 Matrix get_children (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2299 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2300 return m_children.get_children ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2301 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2302
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2303 Matrix get_all_children (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2304 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2305 return m_children.get_all ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2306 }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2307
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2308 Matrix get_hidden_children (void) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2309 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2310 return m_children.get_hidden ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2311 }
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2312
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2313 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2314 get_children_of_type (const caseless_str& type, bool get_invisible,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2315 bool traverse,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2316 std::list<graphics_object> &children_list) const;
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
2317
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2318 void set_modified (const octave_value& val) { set___modified__ (val); }
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2319
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2320 void set___modified__ (const octave_value& val) { m___modified__ = val; }
7366
2a2115742cb5 [project @ 2008-01-13 06:46:39 by jwe]
jwe
parents: 7365
diff changeset
2321
28298
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2322 // Redirect calls to "uicontextmenu" to "contextmenu".
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2323
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2324 graphics_handle get_uicontextmenu (void) const
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2325 {
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2326 return get_contextmenu ();
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2327 }
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2328
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2329 void set_uicontextmenu (const octave_value& val)
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2330 {
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2331 set_contextmenu (val);
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2332 }
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2333
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2334 void reparent (const graphics_handle& new_parent) { m_parent = new_parent; }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2335
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2336 // Update data limits for AXIS_TYPE (xdata, ydata, etc.) in the parent
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2337 // axes object.
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2338
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2339 virtual void update_axis_limits (const std::string& axis_type) const;
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2340
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2341 virtual void 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: 11167
diff changeset
2342 const graphics_handle& h) const;
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2343
28298
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2344 virtual void update_contextmenu (void) const;
20077
69f92e0affd2 Handle uicontextmenu deletion/reset (bug #44801)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20051
diff changeset
2345
26930
ead8f91c5556 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26918
diff changeset
2346 virtual void delete_children (bool clear = false, bool from_root = false)
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2347 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2348 m_children.delete_children (clear, from_root);
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2349 }
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2350
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
2351 void renumber_child (graphics_handle old_gh, graphics_handle new_gh)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2352 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2353 m_children.renumber (old_gh, new_gh);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2354 }
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
2355
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
2356 void renumber_parent (graphics_handle new_gh)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2357 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2358 m_parent = new_gh;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2359 }
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
2360
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2361 static OCTINTERP_API property_list::pval_map_type factory_defaults (void);
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2362
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
2363 // FIXME: These functions should be generated automatically by the
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2364 // genprops.awk script.
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2365 //
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2366 // EMIT_BASE_PROPERTIES_GET_FUNCTIONS
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2367
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2368 virtual octave_value get_alim (void) const { return octave_value (); }
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2369 virtual octave_value get_clim (void) const { return octave_value (); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2370 virtual octave_value get_xlim (void) const { return octave_value (); }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2371 virtual octave_value get_ylim (void) const { return octave_value (); }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2372 virtual octave_value get_zlim (void) const { return octave_value (); }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2373
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2374 virtual bool is_aliminclude (void) const { return false; }
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2375 virtual bool is_climinclude (void) const { return false; }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2376 virtual bool is_xliminclude (void) const { return false; }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2377 virtual bool is_yliminclude (void) const { return false; }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2378 virtual bool is_zliminclude (void) const { return false; }
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
2379
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2380 OCTINTERP_API bool is_handle_visible (void) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2381
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2382 OCTINTERP_API std::set<std::string> dynamic_property_names (void) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2383
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2384 OCTINTERP_API bool has_dynamic_property (const std::string& pname) const;
9185
1e5c11890f85 check for invalid property names when setting defaults
John W. Eaton <jwe@octave.org>
parents: 9004
diff changeset
2385
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2386 protected:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2387 std::set<std::string> m_dynamic_properties;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2388
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2389 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2390 set_dynamic (const caseless_str& pname, const octave_value& val);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2391
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2392 OCTINTERP_API octave_value get_dynamic (const caseless_str& pname) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2393
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2394 OCTINTERP_API octave_value get_dynamic (bool all = false) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2395
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2396 OCTINTERP_API property get_property_dynamic (const caseless_str& pname) const;
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2397
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2398 BEGIN_BASE_PROPERTIES
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2399 // properties common to all objects
27698
f65b1666e650 don't notify toolkit when setting beingdeleted property (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27682
diff changeset
2400 bool_property beingdeleted s , "off"
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2401 radio_property busyaction , "{queue}|cancel"
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2402 callback_property buttondownfcn , Matrix ()
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2403 children_property children gf , Matrix ()
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2404 bool_property clipping , "on"
28298
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2405 handle_property contextmenu u , graphics_handle ()
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2406 callback_property createfcn , Matrix ()
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2407 callback_property deletefcn , Matrix ()
24395
41cf6ee90cb6 Better handling of "handlevisibility" property (bug #52621).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24277
diff changeset
2408 radio_property handlevisibility u , "{on}|callback|off"
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2409 bool_property hittest , "on"
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2410 bool_property interruptible , "on"
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2411 handle_property parent fs , p
24523
501986e12b8b Implement "pickableparts" property (bug #52795).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24501
diff changeset
2412 radio_property pickableparts , "{visible}|all|none"
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2413 bool_property selected , "off"
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2414 bool_property selectionhighlight , "on"
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2415 string_property tag s , ""
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2416 string_property type frs , ty
28298
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
2417 handle_property uicontextmenu gsh , graphics_handle ()
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2418 any_property userdata , Matrix ()
26045
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
2419 bool_property visible u , "on"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
2420
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
2421 // Octave-specific properties
27682
e18237114cf8 Hide __appdata__ internal property (bug #57211).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27446
diff changeset
2422 any_property __appdata__ h , Matrix ()
22665
4ea5b0c3b10f Make base graphics property __modified__ hidden (bug #49205).
Rik <rik@octave.org>
parents: 22631
diff changeset
2423 bool_property __modified__ hs , "on"
8061
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2424 graphics_handle __myhandle__ fhrs , mh
f819e8992367 Auto-generate base_properties
John W. Eaton <jwe@octave.org>
parents: 8059
diff changeset
2425 END_PROPERTIES
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2426
29014
df307ee1fb30 Don't rely on graphics_objects destructor being executed synchronously (bug #53513).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 28346
diff changeset
2427 virtual void update_beingdeleted (void) { };
df307ee1fb30 Don't rely on graphics_objects destructor being executed synchronously (bug #53513).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 28346
diff changeset
2428
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
2429 virtual void update_handlevisibility (void);
24395
41cf6ee90cb6 Better handling of "handlevisibility" property (bug #52621).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24277
diff changeset
2430
26045
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
2431 virtual void update_visible (void) { };
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
2432
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2433 protected:
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2434 struct cmp_caseless_str
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2435 {
30155
14b098a6ba46 maint: Use public: qualifier in structs that are really classes.
Rik <rik@octave.org>
parents: 30053
diff changeset
2436 public:
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
2437 bool operator () (const caseless_str& a, const caseless_str& b) const
8052
961d4c52ffae Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents: 8023
diff changeset
2438 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2439 std::string a1 = a;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2440 std::transform (a1.begin (), a1.end (), a1.begin (), tolower);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2441 std::string b1 = b;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2442 std::transform (b1.begin (), b1.end (), b1.begin (), tolower);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2443
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2444 return a1 < b1;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2445 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2446 };
8052
961d4c52ffae Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents: 8023
diff changeset
2447
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2448 std::map<caseless_str, property, cmp_caseless_str> m_all_props;
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2449
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2450 protected:
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2451
22910
23847979b91e maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
2452 virtual void init (void)
23847979b91e maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
2453 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2454 m_contextmenu.add_constraint ("uicontextmenu");
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
2455 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2456 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2457
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
2458 class OCTINTERP_API base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2459 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2460 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2461 friend class graphics_object;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2462
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2463 base_graphics_object (void) : m_toolkit_flag (false) { }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2464
22869
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
2465 // No copying!
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
2466
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
2467 base_graphics_object (const base_graphics_object&) = delete;
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
2468
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
2469 base_graphics_object& operator = (const base_graphics_object&) = delete;
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
2470
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
2471 virtual ~base_graphics_object (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2472
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2473 virtual void mark_modified (void)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2474 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2475 if (! valid_object ())
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2476 error ("base_graphics_object::mark_modified: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2477
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2478 get_properties ().mark_modified ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2479 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2480
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2481 virtual void override_defaults (base_graphics_object& obj)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2482 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2483 if (! valid_object ())
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2484 error ("base_graphics_object::override_defaults: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2485 get_properties ().override_defaults (obj);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2486 }
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
2487
23433
c9fab0bc983e maint: Use convention 'int& x' for naming references.
Rik <rik@octave.org>
parents: 23401
diff changeset
2488 void build_user_defaults_map (property_list::pval_map_type& def,
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2489 const std::string go_name) const;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2490
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2491 virtual void set_from_list (property_list& plist)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2492 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2493 if (! valid_object ())
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2494 error ("base_graphics_object::set_from_list: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2495
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2496 get_properties ().set_from_list (*this, plist);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2497 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2498
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2499 virtual void set (const caseless_str& pname, const octave_value& pval)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2500 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2501 if (! valid_object ())
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2502 error ("base_graphics_object::set: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2503
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2504 get_properties ().set (pname, pval);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2505 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2506
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2507 virtual void set_defaults (const std::string&)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2508 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2509 error ("base_graphics_object::set_defaults: invalid graphics object");
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2510 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2511
26918
0a13d8d19790 avoid some overloaded virtual warnings (bug #55741)
John W. Eaton <jwe@octave.org>
parents: 26879
diff changeset
2512 // The following version of the get method is not declared virtual
0a13d8d19790 avoid some overloaded virtual warnings (bug #55741)
John W. Eaton <jwe@octave.org>
parents: 26879
diff changeset
2513 // because no derived class overrides it.
0a13d8d19790 avoid some overloaded virtual warnings (bug #55741)
John W. Eaton <jwe@octave.org>
parents: 26879
diff changeset
2514
0a13d8d19790 avoid some overloaded virtual warnings (bug #55741)
John W. Eaton <jwe@octave.org>
parents: 26879
diff changeset
2515 octave_value get (bool all = false) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2516 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2517 if (! valid_object ())
20956
850e3d2533d4 maint: Eliminate more useless statements after error().
Rik <rik@octave.org>
parents: 20955
diff changeset
2518 error ("base_graphics_object::get: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2519
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2520 return get_properties ().get (all);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2521 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2522
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2523 virtual octave_value get (const caseless_str& pname) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2524 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2525 if (! valid_object ())
20956
850e3d2533d4 maint: Eliminate more useless statements after error().
Rik <rik@octave.org>
parents: 20955
diff changeset
2526 error ("base_graphics_object::get: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2527
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2528 return get_properties ().get (pname);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2529 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2530
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2531 virtual octave_value get_default (const caseless_str&) const;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2532
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2533 virtual octave_value get_factory_default (const caseless_str&) const;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2534
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2535 virtual octave_value get_defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2536 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2537 error ("base_graphics_object::get_defaults: invalid graphics object");
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2538 }
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
2539
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2540 virtual property_list get_defaults_list (void) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2541 {
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2542 if (! valid_object ())
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2543 error ("base_graphics_object::get_defaults_list: invalid graphics object");
21055
5e00ed38a58b maint: Replace if/error/else paradigm with just if/error.
Rik <rik@octave.org>
parents: 21021
diff changeset
2544
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2545 return property_list ();
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2546 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2547
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2548 virtual octave_value get_factory_defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2549 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2550 error ("base_graphics_object::get_factory_defaults: invalid graphics object");
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2551 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2552
18963
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2553 virtual property_list get_factory_defaults_list (void) const
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2554 {
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2555 error ("base_graphics_object::get_factory_defaults_list: invalid graphics object");
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2556 }
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2557
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2558 virtual bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2559 {
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2560 return base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2561 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2562
28346
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2563 // FIXME: It seems like this function should be const, but that is
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2564 // currently not possible.
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2565 virtual std::string values_as_string (void);
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2566
28346
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2567 // FIXME: It seems like this function should be const, but that is
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2568 // currently not possible.
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
2569 virtual std::string value_as_string (const std::string& prop);
18118
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17822
diff changeset
2570
28346
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2571 // FIXME: It seems like this function should be const, but that is
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2572 // currently not possible.
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: 10998
diff changeset
2573 virtual octave_scalar_map values_as_struct (void);
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2574
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2575 virtual graphics_handle get_parent (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2576 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2577 if (! valid_object ())
20956
850e3d2533d4 maint: Eliminate more useless statements after error().
Rik <rik@octave.org>
parents: 20955
diff changeset
2578 error ("base_graphics_object::get_parent: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2579
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2580 return get_properties ().get_parent ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2581 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2582
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
2583 graphics_handle get_handle (void) const
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
2584 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2585 if (! valid_object ())
20956
850e3d2533d4 maint: Eliminate more useless statements after error().
Rik <rik@octave.org>
parents: 20955
diff changeset
2586 error ("base_graphics_object::get_handle: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2587
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2588 return get_properties ().get___myhandle__ ();
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
2589 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
2590
26930
ead8f91c5556 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26918
diff changeset
2591 virtual void remove_child (const graphics_handle& h, bool from_root = false)
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2592 {
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2593 if (! valid_object ())
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2594 error ("base_graphics_object::remove_child: invalid graphics object");
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2595
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2596 get_properties ().remove_child (h, from_root);
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2597 }
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
2598
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2599 virtual void adopt (const graphics_handle& h)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2600 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2601 if (! valid_object ())
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2602 error ("base_graphics_object::adopt: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2603
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2604 get_properties ().adopt (h);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2605 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2606
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2607 virtual void reparent (const graphics_handle& np)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2608 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2609 if (! valid_object ())
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2610 error ("base_graphics_object::reparent: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2611
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2612 get_properties ().reparent (np);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2613 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2614
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2615 virtual void defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2616 {
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
2617 if (! valid_object ())
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2618 error ("base_graphics_object::default: invalid graphics object");
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
2619
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20956
diff changeset
2620 std::string msg = (type () + "::defaults");
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents: 21055
diff changeset
2621 err_not_implemented (msg.c_str ());
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2622 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2623
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2624 virtual base_properties& get_properties (void)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2625 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2626 static base_properties properties;
22190
e68128601f5e skip invalid objects in Qt graphics event handlers (bug #46501)
John W. Eaton <jwe@octave.org>
parents: 22069
diff changeset
2627 warning ("base_graphics_object::get_properties: invalid graphics object");
e68128601f5e skip invalid objects in Qt graphics event handlers (bug #46501)
John W. Eaton <jwe@octave.org>
parents: 22069
diff changeset
2628 return properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2629 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2630
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2631 virtual const base_properties& get_properties (void) const
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2632 {
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2633 static base_properties properties;
22190
e68128601f5e skip invalid objects in Qt graphics event handlers (bug #46501)
John W. Eaton <jwe@octave.org>
parents: 22069
diff changeset
2634 warning ("base_graphics_object::get_properties: invalid graphics object");
e68128601f5e skip invalid objects in Qt graphics event handlers (bug #46501)
John W. Eaton <jwe@octave.org>
parents: 22069
diff changeset
2635 return properties;
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2636 }
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2637
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2638 virtual void update_axis_limits (const std::string& axis_type);
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2639
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2640 virtual void 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: 11167
diff changeset
2641 const graphics_handle& h);
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2642
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2643 virtual bool valid_object (void) const { return false; }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2644
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2645 bool valid_toolkit_object (void) const { return m_toolkit_flag; }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2646
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2647 virtual std::string type (void) const
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2648 {
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2649 return (valid_object () ? get_properties ().graphics_object_name ()
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2650 : "unknown");
7386
22815fa9c368 [project @ 2008-01-15 21:28:43 by jwe]
jwe
parents: 7384
diff changeset
2651 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2652
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2653 bool isa (const std::string& go_name) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2654 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2655 return type () == go_name;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2656 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2657
27734
a9780be9ecbc move graphics_toolkit class inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27730
diff changeset
2658 virtual octave::graphics_toolkit get_toolkit (void) const
7419
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7408
diff changeset
2659 {
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2660 if (! valid_object ())
20956
850e3d2533d4 maint: Eliminate more useless statements after error().
Rik <rik@octave.org>
parents: 20955
diff changeset
2661 error ("base_graphics_object::get_toolkit: invalid graphics object");
20976
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2662
0fd972b06a6f maint: graphics.in.h: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents: 20962
diff changeset
2663 return get_properties ().get_toolkit ();
7419
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7408
diff changeset
2664 }
f62fb98f1da2 [project @ 2008-01-25 08:24:48 by jwe]
jwe
parents: 7408
diff changeset
2665
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2666 virtual void add_property_listener (const std::string& nm,
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
2667 const octave_value& v,
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2668 listener_mode mode = GCB_POSTSET)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2669 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2670 if (valid_object ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2671 get_properties ().add_listener (nm, v, mode);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2672 }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2673
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
2674 virtual void delete_property_listener (const std::string& nm,
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
2675 const octave_value& v,
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2676 listener_mode mode = GCB_POSTSET)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2677 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2678 if (valid_object ())
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2679 get_properties ().delete_listener (nm, v, mode);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2680 }
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
2681
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
2682 virtual void 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
2683
18963
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2684 virtual void reset_default_properties (void);
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
2685
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2686 protected:
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2687 virtual void initialize (const graphics_object& go)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2688 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2689 if (! m_toolkit_flag)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2690 m_toolkit_flag = get_toolkit ().initialize (go);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2691 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2692
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2693 virtual void finalize (const graphics_object& go)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2694 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2695 if (m_toolkit_flag)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2696 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2697 get_toolkit ().finalize (go);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2698 m_toolkit_flag = false;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2699 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2700 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2701
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2702 virtual void update (const graphics_object& go, int id)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2703 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2704 if (m_toolkit_flag)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2705 get_toolkit ().update (go, id);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2706 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2707
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2708 protected:
12164
18e9a8da7d18 eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents: 12126
diff changeset
2709
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2710 // A flag telling whether this object is a valid object
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2711 // in the backend context.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2712 bool m_toolkit_flag;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2713 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2714
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
2715 class OCTINTERP_API graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2716 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2717 public:
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
2718
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2719 graphics_object (void) : m_rep (new base_graphics_object ()) { }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2720
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2721 graphics_object (base_graphics_object *new_rep) : m_rep (new_rep) { }
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
2722
24991
831389905438 omit argument name from default copy ctors and assignment operators
John W. Eaton <jwe@octave.org>
parents: 24795
diff changeset
2723 graphics_object (const graphics_object&) = default;
831389905438 omit argument name from default copy ctors and assignment operators
John W. Eaton <jwe@octave.org>
parents: 24795
diff changeset
2724
831389905438 omit argument name from default copy ctors and assignment operators
John W. Eaton <jwe@octave.org>
parents: 24795
diff changeset
2725 graphics_object& operator = (const graphics_object&) = default;
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
2726
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
2727 ~graphics_object (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2728
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2729 void mark_modified (void) { m_rep->mark_modified (); }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2730
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2731 void override_defaults (base_graphics_object& obj)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2732 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2733 m_rep->override_defaults (obj);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2734 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2735
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
2736 void override_defaults (void)
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
2737 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2738 m_rep->override_defaults (*m_rep);
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
2739 }
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
2740
23433
c9fab0bc983e maint: Use convention 'int& x' for naming references.
Rik <rik@octave.org>
parents: 23401
diff changeset
2741 void build_user_defaults_map (property_list::pval_map_type& def,
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2742 const std::string go_name) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2743 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2744 m_rep->build_user_defaults_map (def, go_name);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2745 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2746
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2747 void set_from_list (property_list& plist) { m_rep->set_from_list (plist); }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2748
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2749 void set (const caseless_str& name, const octave_value& val)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2750 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2751 m_rep->set (name, val);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2752 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2753
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2754 OCTINTERP_API void set (const octave_value_list& args);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2755
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2756 OCTINTERP_API void set (const Array<std::string>& names, const Cell& values,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2757 octave_idx_type row);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2758
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2759 OCTINTERP_API void set (const octave_map& m);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2760
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2761 OCTINTERP_API void set_value_or_default (const caseless_str& name,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2762 const octave_value& val);
10056
33ba83a06a42 Fix set function to allow cell and struct arguments.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9972
diff changeset
2763
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2764 void set_defaults (const std::string& mode) { m_rep->set_defaults (mode); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2765
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2766 octave_value get (bool all = false) const { return m_rep->get (all); }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2767
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2768 octave_value get (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2769 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2770 return name.compare ("default")
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2771 ? get_defaults ()
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2772 : (name.compare ("factory")
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2773 ? get_factory_defaults () : m_rep->get (name));
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2774 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2775
9620
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2776 octave_value get (const std::string& name) const
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2777 {
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2778 return get (caseless_str (name));
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2779 }
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2780
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2781 octave_value get (const char *name) const
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2782 {
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2783 return get (caseless_str (name));
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2784 }
b00af0da85dd graphics.h.in: provide std::string and char* versions of graphics_object:get functions
John W. Eaton <jwe@octave.org>
parents: 9616
diff changeset
2785
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2786 octave_value get_default (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2787 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2788 return m_rep->get_default (name);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2789 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2790
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
2791 octave_value get_factory_default (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2792 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2793 return m_rep->get_factory_default (name);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2794 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2795
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2796 octave_value get_defaults (void) const { return m_rep->get_defaults (); }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2797
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2798 property_list get_defaults_list (void) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2799 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2800 return m_rep->get_defaults_list ();
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2801 }
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
2802
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2803 octave_value get_factory_defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2804 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2805 return m_rep->get_factory_defaults ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2806 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2807
18963
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2808 property_list get_factory_defaults_list (void) const
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2809 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2810 return m_rep->get_factory_defaults_list ();
18963
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2811 }
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
2812
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2813 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2814 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2815 return m_rep->has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2816 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
2817
28346
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2818 // FIXME: It seems like this function should be const, but that is
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2819 // currently not possible.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2820 std::string values_as_string (void) { return m_rep->values_as_string (); }
10717
9d4a198614ab Add functionality set(handle)
David Bateman <dbateman@free.fr>
parents: 10596
diff changeset
2821
28346
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2822 // FIXME: It seems like this function should be const, but that is
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2823 // currently not possible.
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2824 std::string value_as_string (const std::string& prop)
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
2825 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2826 return m_rep->value_as_string (prop);
18118
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17822
diff changeset
2827 }
ca84d3c9dc24 set: allow retrieving allowed values for individual properties
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 17822
diff changeset
2828
28346
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2829 // FIXME: It seems like this function should be const, but that is
d0555f415774 fix constness of some graphics properties methods
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
2830 // currently not possible.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2831 octave_map values_as_struct (void) { return m_rep->values_as_struct (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2832
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2833 graphics_handle get_parent (void) const { return m_rep->get_parent (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2834
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2835 graphics_handle get_handle (void) const { return m_rep->get_handle (); }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
2836
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2837 OCTINTERP_API graphics_object get_ancestor (const std::string& type) const;
11250
830b940e7ff4 Turn xget_ancestor into regular API
Michael Goffioul <michael.goffioul@gmail.com>
parents: 11247
diff changeset
2838
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2839 void remove_child (const graphics_handle& h) { m_rep->remove_child (h); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2840
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2841 void adopt (const graphics_handle& h) { m_rep->adopt (h); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2842
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2843 void reparent (const graphics_handle& h) { m_rep->reparent (h); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2844
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2845 void defaults (void) const { m_rep->defaults (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2846
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2847 bool isa (const std::string& go_name) const { return m_rep->isa (go_name); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2848
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2849 base_properties& get_properties (void) { return m_rep->get_properties (); }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2850
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2851 const base_properties& get_properties (void) const
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2852 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2853 return m_rep->get_properties ();
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2854 }
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2855
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2856 void update_axis_limits (const std::string& axis_type)
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2857 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2858 m_rep->update_axis_limits (axis_type);
7214
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2859 }
86d0b16f2bb2 [project @ 2007-11-29 03:40:04 by jwe]
jwe
parents: 7213
diff changeset
2860
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2861 void 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: 11167
diff changeset
2862 const graphics_handle& h)
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
2863 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2864 m_rep->update_axis_limits (axis_type, h);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2865 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2866
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2867 bool valid_object (void) const { return m_rep->valid_object (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2868
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2869 std::string type (void) const { return m_rep->type (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2870
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2871 operator bool (void) const { return m_rep->valid_object (); }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2872
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
2873 // FIXME: These functions should be generated automatically by the
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2874 // genprops.awk script.
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2875 //
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
2876 // EMIT_GRAPHICS_OBJECT_GET_FUNCTIONS
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2877
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2878 octave_value get_alim (void) const
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2879 { return get_properties ().get_alim (); }
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2880
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2881 octave_value get_clim (void) const
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2882 { return get_properties ().get_clim (); }
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2883
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2884 octave_value get_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
2885 { return get_properties ().get_xlim (); }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2886
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2887 octave_value get_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
2888 { return get_properties ().get_ylim (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2889
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2890 octave_value get_zlim (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
2891 { return get_properties ().get_zlim (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2892
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2893 bool is_aliminclude (void) const
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2894 { return get_properties ().is_aliminclude (); }
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2895
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2896 bool is_climinclude (void) const
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2897 { return get_properties ().is_climinclude (); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2898
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2899 bool is_xliminclude (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
2900 { return get_properties ().is_xliminclude (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2901
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2902 bool is_yliminclude (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
2903 { return get_properties ().is_yliminclude (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2904
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
2905 bool is_zliminclude (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
2906 { return get_properties ().is_zliminclude (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2907
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
2908 bool is_handle_visible (void) const
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
2909 { return get_properties ().is_handle_visible (); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
2910
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2911 octave::graphics_toolkit get_toolkit (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2912 { return m_rep->get_toolkit (); }
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7406
diff changeset
2913
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2914 void add_property_listener (const std::string& nm, const octave_value& v,
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2915 listener_mode mode = GCB_POSTSET)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2916 { m_rep->add_property_listener (nm, v, mode); }
7849
3249f64f69b2 Initial low-level support for property listeners.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7848
diff changeset
2917
8299
be9b14945774 Add code to remove listeners from properties and use it with newplot
David Bateman <dbateman@free.fr>
parents: 8291
diff changeset
2918 void delete_property_listener (const std::string& nm, const octave_value& v,
27320
1dfd6ae74fbf use GCB_ prefix for global listener_mode enum names
John W. Eaton <jwe@octave.org>
parents: 27099
diff changeset
2919 listener_mode mode = GCB_POSTSET)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2920 { m_rep->delete_property_listener (nm, v, mode); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2921
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2922 void remove_all_listeners (void) { m_rep->remove_all_listeners (); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2923
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2924 void initialize (void) { m_rep->initialize (*this); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2925
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2926 void finalize (void) { m_rep->finalize (*this); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2927
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2928 void update (int id) { m_rep->update (*this, id); }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
2929
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
2930 void reset_default_properties (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2931 { m_rep->reset_default_properties (); }
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
2932
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7406
diff changeset
2933 private:
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
2934
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2935 std::shared_ptr<base_graphics_object> m_rep;
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7406
diff changeset
2936 };
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7406
diff changeset
2937
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7406
diff changeset
2938 // ---------------------------------------------------------------------
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7406
diff changeset
2939
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
2940 class OCTINTERP_API root_figure : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2941 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2942 public:
23763
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2943
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2944 // The gh_manager constructor creates the single instance of
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2945 // the root_figure object.
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2946
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2947 friend class gh_manager;
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2948
7821
f79dcba526a8 Export nested properties classes of all graphics object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7527
diff changeset
2949 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2950 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2951 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2952 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2953 remove_child (const graphics_handle& h, bool from_root = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2954
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2955 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2956 get_boundingbox (bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
2957 const Matrix& parent_pix_size = Matrix ()) const;
14357
e7c74f56cd03 fltk toolkit requires figure units to be "pixels". Bug # 35430.
Ben Abbott <bpabbott@mac.com>
parents: 14324
diff changeset
2958
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2959 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2960 // properties declarations.
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2961
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
2962 // FIXME: Properties that still don't have callbacks are:
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
2963 // monitorpositions, pointerlocation, pointerwindow.
18764
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18737
diff changeset
2964 // Note that these properties are not yet used by Octave, so setting
89448a7523b2 Add some more callbacks for root properties (bug #42347).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18737
diff changeset
2965 // them will have no effect.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2966
20459
564e59f75ef8 Remove obsolete properties from root figure object.
Rik <rik@octave.org>
parents: 20428
diff changeset
2967 // FIXME: The commandwindowsize property has been deprecated in Matlab
564e59f75ef8 Remove obsolete properties from root figure object.
Rik <rik@octave.org>
parents: 20428
diff changeset
2968 // and is now available through matlab.desktop.comandwindow.size.
564e59f75ef8 Remove obsolete properties from root figure object.
Rik <rik@octave.org>
parents: 20428
diff changeset
2969 // Until Octave has something similar, keep this property in root.
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
2970
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2971 // Programming note: Keep property list sorted if new ones are added.
9778
2364eebcd644 new root figure properties
John W. Eaton <jwe@octave.org>
parents: 9777
diff changeset
2972
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
2973 BEGIN_PROPERTIES (root_figure, root)
9778
2364eebcd644 new root figure properties
John W. Eaton <jwe@octave.org>
parents: 9777
diff changeset
2974 handle_property callbackobject Sr , graphics_handle ()
2364eebcd644 new root figure properties
John W. Eaton <jwe@octave.org>
parents: 9777
diff changeset
2975 array_property commandwindowsize r , Matrix (1, 2, 0)
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
2976 handle_property currentfigure S , graphics_handle ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2977 string_property fixedwidthfontname , "Courier"
21952
a5924b0cbf42 Return "Screensize" for root graphics property "MonitorPositions" (partial fix bug #48239).
Rik <rik@octave.org>
parents: 21948
diff changeset
2978 array_property monitorpositions r , default_screensize ()
10949
848f3a13b7cf Backed out changeset 6b50fd2d4ca6
David Bateman <dbateman@free.fr>
parents: 10948
diff changeset
2979 array_property pointerlocation , Matrix (1, 2, 0)
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
2980 double_property pointerwindow r , 0.0
8560
5cc594679cdc get display characteristics from system
John W. Eaton <jwe@octave.org>
parents: 8465
diff changeset
2981 double_property screendepth r , default_screendepth ()
9778
2364eebcd644 new root figure properties
John W. Eaton <jwe@octave.org>
parents: 9777
diff changeset
2982 double_property screenpixelsperinch r , default_screenpixelsperinch ()
10949
848f3a13b7cf Backed out changeset 6b50fd2d4ca6
David Bateman <dbateman@free.fr>
parents: 10948
diff changeset
2983 array_property screensize r , default_screensize ()
9778
2364eebcd644 new root figure properties
John W. Eaton <jwe@octave.org>
parents: 9777
diff changeset
2984 bool_property showhiddenhandles , "off"
25903
06c41d1ae5b1 Allow 'characters' as a value for the Units property of root object (bug #54742).
Rik <rik@octave.org>
parents: 25891
diff changeset
2985 radio_property units U , "{pixels}|inches|centimeters|points|normalized|characters"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
2986 // Hide base properties which don't make sense for root object
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
2987 //radio_property beingdeleted h , "{off}|on"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2988 END_PROPERTIES
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2989 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2990
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2991 private:
23763
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2992
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2993 properties m_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
2994
23763
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2995 protected:
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2996
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
2997 root_figure (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2998 : m_properties (0, graphics_handle ()), m_default_properties (),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2999 m_factory_properties (init_factory_properties ())
23763
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
3000 { }
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
3001
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3002 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3003
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
3004 ~root_figure (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3005
23763
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
3006 root_figure (const root_figure&) = delete;
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
3007
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
3008 root_figure& operator = (const root_figure&) = delete;
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
3009
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3010 void mark_modified (void) { }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3011
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3012 void override_defaults (base_graphics_object& obj)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3013 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3014 // Now override with our defaults. If the default_properties
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3015 // list includes the properties for all defaults (line,
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3016 // surface, etc.) then we don't have to know the type of OBJ
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3017 // here, we just call its set function and let it decide which
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3018 // properties from the list to use.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3019 obj.set_from_list (m_default_properties);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3020 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3021
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
3022 void set (const caseless_str& name, const octave_value& value)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3023 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3024 if (name.compare ("default", 7))
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3025 // strip "default", pass rest to function that will
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3026 // parse the remainder and add the element to the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3027 // default_properties map.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3028 m_default_properties.set (name.substr (7), value);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3029 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3030 m_properties.set (name, value);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3031 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3032
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
3033 octave_value get (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3034 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3035 octave_value retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3036
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3037 if (name.compare ("default", 7))
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3038 return get_default (name.substr (7));
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3039 else if (name.compare ("factory", 7))
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3040 return get_factory_default (name.substr (7));
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3041 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3042 retval = m_properties.get (name);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3043
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3044 return retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3045 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3046
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
3047 octave_value get_default (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3048 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3049 octave_value retval = m_default_properties.lookup (name);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3050
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3051 if (retval.is_undefined ())
7847
40b16e04172a Make backend switching work.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7846
diff changeset
3052 {
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
3053 // no default property found, use factory default
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3054 retval = m_factory_properties.lookup (name);
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
3055
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
3056 if (retval.is_undefined ())
15468
6437fa7263dd use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
3057 error ("get: invalid default property '%s'", name.c_str ());
7847
40b16e04172a Make backend switching work.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7846
diff changeset
3058 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3059
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3060 return retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3061 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3062
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
3063 octave_value get_factory_default (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3064 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3065 octave_value retval = m_factory_properties.lookup (name);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3066
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3067 if (retval.is_undefined ())
15468
6437fa7263dd use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
3068 error ("get: invalid factory default property '%s'", name.c_str ());
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3069
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3070 return retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3071 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3072
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3073 octave_value get_defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3074 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3075 return m_default_properties.as_struct ("default");
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3076 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3077
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
3078 property_list get_defaults_list (void) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
3079 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3080 return m_default_properties;
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
3081 }
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
3082
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3083 octave_value get_factory_defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3084 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3085 return m_factory_properties.as_struct ("factory");
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3086 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3087
18963
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
3088 property_list get_factory_defaults_list (void) const
a30e1d20fd3c Freset: properly reset graphics objects (bug #35511)
pantxo <pantxo.diribarne@gmail.com>
parents: 18961
diff changeset
3089 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3090 return m_factory_properties;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3091 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3092
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3093 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3094
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3095 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
3096
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3097 bool valid_object (void) const { return true; }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3098
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3099 OCTINTERP_API void reset_default_properties (void);
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
3100
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3101 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3102 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3103 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3104 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3105 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3106 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3107 }
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
3108
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3109 private:
23763
54aa9a3250b4 make root_figure::factory_properties local instead of global
John W. Eaton <jwe@octave.org>
parents: 23639
diff changeset
3110
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3111 property_list m_default_properties;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3112
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3113 property_list m_factory_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3114
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3115 static OCTINTERP_API property_list::plist_map_type
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3116 init_factory_properties (void);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3117 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3118
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3119 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3120
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
3121 class OCTINTERP_API figure : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3122 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3123 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3124
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7441
diff changeset
3125 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3126 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3127 public:
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
3128 void init_integerhandle (const octave_value& val)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3129 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3130 m_integerhandle = val;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3131 }
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
3132
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3133 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3134 remove_child (const graphics_handle& h, bool from_root = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3135
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3136 OCTINTERP_API void set_visible (const octave_value& val);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3137
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3138 OCTINTERP_API octave::graphics_toolkit get_toolkit (void) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3139
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3140 OCTINTERP_API void set_toolkit (const octave::graphics_toolkit& b);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3141
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3142 OCTINTERP_API void set___graphics_toolkit__ (const octave_value& val);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3143
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3144 OCTINTERP_API void adopt (const graphics_handle& h);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3145
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3146 OCTINTERP_API void set_position (const octave_value& val,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3147 bool do_notify_toolkit = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3148
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3149 OCTINTERP_API void set_outerposition (const octave_value& val,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3150 bool do_notify_toolkit = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3151
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3152 OCTINTERP_API Matrix bbox2position (const Matrix& bbox) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3153
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3154 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3155 get_boundingbox (bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3156 const Matrix& parent_pix_size = Matrix ()) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3157
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3158 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3159 set_boundingbox (const Matrix& bb, bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3160 bool do_notify_toolkit = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3161
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3162 OCTINTERP_API Matrix map_from_boundingbox (double x, double y) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3163
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3164 OCTINTERP_API Matrix map_to_boundingbox (double x, double y) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3165
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3166 OCTINTERP_API void update_units (const caseless_str& old_units);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3167
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3168 OCTINTERP_API void update_paperunits (const caseless_str& old_paperunits);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3169
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3170 OCTINTERP_API std::string get_title (void) const;
8059
75c99d3f97d7 Octave to backend notification scheme
John W. Eaton <jwe@octave.org>
parents: 8058
diff changeset
3171
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3172 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3173 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3174 // Programming note: Keep property list sorted if new ones are added.
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3175
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
3176 BEGIN_PROPERTIES (figure)
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3177 array_property alphamap , Matrix (64, 1, 1)
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3178 callback_property buttondownfcn , Matrix ()
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
3179 callback_property closerequestfcn , "closereq"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3180 color_property color , color_property (color_values (1, 1, 1), radio_values ("none"))
20761
47cec845dd5a Set default colormap to viridis
Carlo de Falco <carlo.defalco@polimi.it>
parents: 20756
diff changeset
3181 array_property colormap , viridis_colormap ()
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
3182 handle_property currentaxes S , graphics_handle ()
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3183 string_property currentcharacter r , ""
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3184 handle_property currentobject r , graphics_handle ()
10517
9cdd6c8c05a4 [mq]: fltk_cb
Shai Ayal <shaiay@users.sourceforge.net>
parents: 10505
diff changeset
3185 array_property currentpoint r , Matrix (2, 1, 0)
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3186 bool_property dockcontrols , "off"
11247
29b1f7d68665 make filename property of figure objects writable
John W. Eaton <jwe@octave.org>
parents: 11175
diff changeset
3187 string_property filename , ""
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3188 bool_property graphicssmoothing , "on"
13816
7ee18dc46bbb new and improved non-integer figure handles
John W. Eaton <jwe@octave.org>
parents: 13810
diff changeset
3189 bool_property integerhandle S , "on"
21323
030d4d6c2b58 Implement figure property "InvertHardCopy" for printing (bug #47230).
Rik <rik@octave.org>
parents: 21289
diff changeset
3190 bool_property inverthardcopy , "on"
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3191 callback_property keypressfcn , Matrix ()
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3192 callback_property keyreleasefcn , Matrix ()
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3193 radio_property menubar , "{figure}|none"
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3194 string_property name , ""
25273
ac6ba9f2fa41 Add new Figure graphic property "Number" (bug #53343).
Rik <rik@octave.org>
parents: 25173
diff changeset
3195 array_property number rG , Matrix ()
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3196 radio_property nextplot , "{add}|new|replace|replacechildren"
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3197 bool_property numbertitle , "on"
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3198 array_property outerposition s , Matrix (1, 4, -1.0)
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3199 radio_property paperorientation U , "{portrait}|landscape"
18773
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18766
diff changeset
3200 array_property paperposition m , default_figure_paperposition ()
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3201 // FIXME: Matlab default is "auto", but this messes up hgsave BIST test.
27432
1e79d913baaa Change default figure property "paperpositionmode" to "auto" (bug #56916).
Rik <rik@octave.org>
parents: 27335
diff changeset
3202 radio_property paperpositionmode au , "{auto}|manual"
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
3203 array_property papersize U , default_figure_papersize ()
9d3a7ad94ee6 Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents: 10990
diff changeset
3204 radio_property papertype SU , "{usletter}|uslegal|a0|a1|a2|a3|a4|a5|b0|b1|b2|b3|b4|b5|arch-a|arch-b|arch-c|arch-d|arch-e|a|b|c|d|e|tabloid|<custom>"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3205 radio_property paperunits Su , "{inches}|centimeters|normalized|points"
27099
2cd31365c84a Implement "pointer" and related figure properties for Qt toolkit (bug #56347)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26985
diff changeset
3206 radio_property pointer , "crosshair|{arrow}|ibeam|watch|topl|topr|botl|botr|left|top|right|bottom|circle|cross|fleur|custom|hand"
2cd31365c84a Implement "pointer" and related figure properties for Qt toolkit (bug #56347)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26985
diff changeset
3207 array_property pointershapecdata , Matrix (16, 16, 1)
2cd31365c84a Implement "pointer" and related figure properties for Qt toolkit (bug #56347)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26985
diff changeset
3208 array_property pointershapehotspot , Matrix (1, 2, 1)
13713
d99aa455296e Add outerposition property to figure objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13703
diff changeset
3209 array_property position s , default_figure_position ()
21367
0035733e4b3a graphics.in.h: Make sure XXXmode properties switch to "manual" if XXX is set.
Rik <rik@octave.org>
parents: 21323
diff changeset
3210 radio_property renderer m , "{opengl}|painters"
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3211 radio_property renderermode , "{auto}|manual"
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3212 bool_property resize , "on"
26129
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
3213 // FIXME: "resizefcn" is no longer recommended by Matlab,
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
3214 // and has been replaced with "sizechangedfcn"
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3215 // Eventually this will need to be hidden, and then removed.
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3216 callback_property resizefcn , Matrix ()
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3217 radio_property selectiontype , "{normal}|extend|alt|open"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3218 callback_property sizechangedfcn , Matrix ()
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3219 radio_property toolbar , "{auto}|figure|none"
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3220 radio_property units Su , "{pixels}|normalized|inches|centimeters|points|characters"
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3221 callback_property windowbuttondownfcn , Matrix ()
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3222 callback_property windowbuttonmotionfcn , Matrix ()
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3223 callback_property windowbuttonupfcn , Matrix ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3224 callback_property windowkeypressfcn , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3225 callback_property windowkeyreleasefcn , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3226 callback_property windowscrollwheelfcn , Matrix ()
7405
b0734cf13ad4 [project @ 2008-01-19 07:33:00 by jwe]
jwe
parents: 7404
diff changeset
3227 radio_property windowstyle , "{normal}|modal|docked"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
3228
24687
8b935067a257 Allow printing without updating qt visible or invisible figures (bug #52940).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24637
diff changeset
3229 // Overridden base property
24637
3d78a7eb5aa4 Make "PickableParts" property for figures the fixed value of "visible".
Rik <rik@octave.org>
parents: 24635
diff changeset
3230 // Property is not implemented for figures.
3d78a7eb5aa4 Make "PickableParts" property for figures the fixed value of "visible".
Rik <rik@octave.org>
parents: 24635
diff changeset
3231 // Hide it and set it to a default value that works.
3d78a7eb5aa4 Make "PickableParts" property for figures the fixed value of "visible".
Rik <rik@octave.org>
parents: 24635
diff changeset
3232 radio_property pickableparts h , "{visible}"
3d78a7eb5aa4 Make "PickableParts" property for figures the fixed value of "visible".
Rik <rik@octave.org>
parents: 24635
diff changeset
3233
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3234 // Octave-specific properties
21684
1449e3b98941 store OpenGL version info in figure properties
John W. Eaton <jwe@octave.org>
parents: 21659
diff changeset
3235 mutable string_property __gl_extensions__ hr , ""
1449e3b98941 store OpenGL version info in figure properties
John W. Eaton <jwe@octave.org>
parents: 21659
diff changeset
3236 mutable string_property __gl_renderer__ hr , ""
1449e3b98941 store OpenGL version info in figure properties
John W. Eaton <jwe@octave.org>
parents: 21659
diff changeset
3237 mutable string_property __gl_vendor__ hr , ""
1449e3b98941 store OpenGL version info in figure properties
John W. Eaton <jwe@octave.org>
parents: 21659
diff changeset
3238 mutable string_property __gl_version__ hr , ""
24687
8b935067a257 Allow printing without updating qt visible or invisible figures (bug #52940).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24637
diff changeset
3239 bool_property __gl_window__ h , "off"
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents: 23763
diff changeset
3240 string_property __graphics_toolkit__ hs , default_graphics_toolkit ()
13699
dd9b32af0a01 Implement guidata/guihandles.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13324
diff changeset
3241 any_property __guidata__ h , Matrix ()
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3242 radio_property __mouse_mode__ hS , "{none}|pan|rotate|select|text|zoom"
24687
8b935067a257 Allow printing without updating qt visible or invisible figures (bug #52940).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24637
diff changeset
3243 bool_property __printing__ h , "off"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3244 any_property __pan_mode__ h , Matrix ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3245 any_property __plot_stream__ h , Matrix ()
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3246 any_property __rotate_mode__ h , Matrix ()
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3247 any_property __zoom_mode__ h , Matrix ()
25884
4e108574385c Improve OpenGL rendering on high resolution screens with Qt 5 (bug #49053)
John Swensen <jpswensen@gmail.com>
parents: 25867
diff changeset
3248 double_property __device_pixel_ratio__ hU , 1.0
21948
241d39c66e8f Update graphics properties for figure object.
Rik <rik@octave.org>
parents: 21905
diff changeset
3249
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3250 END_PROPERTIES
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
3251
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
3252 protected:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
3253 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3254 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3255 m_alphamap.add_constraint (dim_vector (-1, 1));
30053
0b67964031be allow figure alphamap property to be a column vector (bug #61085)
John W. Eaton <jwe@octave.org>
parents: 30040
diff changeset
3256 m_alphamap.add_constraint (dim_vector (1, -1));
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3257 m_colormap.add_constraint (dim_vector (-1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3258 m_colormap.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3259 m_outerposition.add_constraint (dim_vector (1, 4));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3260 m_outerposition.add_constraint (FINITE);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3261 m_paperposition.add_constraint (dim_vector (1, 4));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3262 m_paperposition.add_constraint (FINITE);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3263 m_papersize.add_constraint (dim_vector (1, 2));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3264 m_papersize.add_constraint (FINITE);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3265 m_pointershapecdata.add_constraint (dim_vector (16, 16));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3266 m_pointershapecdata.add_constraint (dim_vector (32, 32));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3267 m_pointershapehotspot.add_constraint (dim_vector (1, 2));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3268 m_position.add_constraint (dim_vector (1, 4));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3269 m_position.add_constraint (FINITE);
27709
0a84a7d0998d don't declare figure::properties::toolkit as mutable
John W. Eaton <jwe@octave.org>
parents: 27698
diff changeset
3270
0a84a7d0998d don't declare figure::properties::toolkit as mutable
John W. Eaton <jwe@octave.org>
parents: 27698
diff changeset
3271 init_toolkit ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3272 }
7408
246f905cb984 [project @ 2008-01-22 19:42:47 by jwe]
jwe
parents: 7406
diff changeset
3273
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
3274 private:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3275 OCTINTERP_API Matrix get_auto_paperposition (void);
18773
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18766
diff changeset
3276
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18766
diff changeset
3277 void update_paperpositionmode (void)
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18766
diff changeset
3278 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3279 if (m_paperpositionmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3280 m_paperposition.set (get_auto_paperposition ());
18773
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18766
diff changeset
3281 }
70ea5a2856fe Handle figure paperpositionmode "auto" (bug #37554)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18766
diff changeset
3282
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3283 OCTINTERP_API void update_handlevisibility (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3284
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3285 OCTINTERP_API void init_toolkit (void);
27709
0a84a7d0998d don't declare figure::properties::toolkit as mutable
John W. Eaton <jwe@octave.org>
parents: 27698
diff changeset
3286
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3287 octave::graphics_toolkit m_toolkit;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3288 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3289
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3290 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3291 properties m_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3292
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3293 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3294 figure (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3295 : base_graphics_object (), m_properties (mh, p), m_default_properties ()
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
3296 { }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3297
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
3298 ~figure (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3299
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3300 void override_defaults (base_graphics_object& obj)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3301 {
26878
3c7c5b7c3044 doc: Refer to "root object" rather than "root figure object".
Rik <rik@octave.org>
parents: 26520
diff changeset
3302 // Allow parent (root object) to override first (properties knows how
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3303 // to find the parent object).
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3304 m_properties.override_defaults (obj);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3305
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3306 // Now override with our defaults. If the default_properties
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3307 // list includes the properties for all defaults (line,
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3308 // surface, etc.) then we don't have to know the type of OBJ
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3309 // here, we just call its set function and let it decide which
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3310 // properties from the list to use.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3311 obj.set_from_list (m_default_properties);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3312 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3313
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
3314 void set (const caseless_str& name, const octave_value& value)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3315 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3316 if (name.compare ("default", 7))
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3317 // strip "default", pass rest to function that will
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3318 // parse the remainder and add the element to the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3319 // default_properties map.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3320 m_default_properties.set (name.substr (7), value);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3321 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3322 m_properties.set (name, value);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3323 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3324
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
3325 octave_value get (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3326 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3327 octave_value retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3328
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3329 if (name.compare ("default", 7))
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3330 retval = get_default (name.substr (7));
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3331 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3332 retval = m_properties.get (name);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3333
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3334 return retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3335 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3336
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3337 OCTINTERP_API octave_value get_default (const caseless_str& name) const;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3338
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3339 octave_value get_defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3340 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3341 return m_default_properties.as_struct ("default");
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3342 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3343
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
3344 property_list get_defaults_list (void) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
3345 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3346 return m_default_properties;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3347 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3348
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3349 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3350
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3351 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
3352
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3353 bool valid_object (void) const { return true; }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3354
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3355 OCTINTERP_API void reset_default_properties (void);
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
3356
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3357 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3358 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3359 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3360 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3361 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3362 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
3363 }
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
3364
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3365 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3366 property_list m_default_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3367 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3368
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3369 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3370
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3371 class OCTINTERP_API graphics_xform
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3372 {
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3373 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3374
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3375 graphics_xform (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3376 : m_xform (xform_eye ()), m_xform_inv (xform_eye ()),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3377 m_sx ("linear"), m_sy ("linear"), m_sz ("linear"), m_zlim (1, 2, 0.0)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3378 {
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3379 m_zlim(1) = 1.0;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3380 }
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3381
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3382 graphics_xform (const Matrix& xm, const Matrix& xim,
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
3383 const scaler& x, const scaler& y, const scaler& z,
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
3384 const Matrix& zl)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3385 : m_xform (xm), m_xform_inv (xim), m_sx (x), m_sy (y), m_sz (z), m_zlim (zl) { }
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3386
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3387 graphics_xform (const graphics_xform& g)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3388 : m_xform (g.m_xform), m_xform_inv (g.m_xform_inv), m_sx (g.m_sx),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3389 m_sy (g.m_sy), m_sz (g.m_sz), m_zlim (g.m_zlim) { }
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3390
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
3391 ~graphics_xform (void) = default;
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3392
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3393 graphics_xform& operator = (const graphics_xform& g)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3394 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3395 m_xform = g.m_xform;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3396 m_xform_inv = g.m_xform_inv;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3397 m_sx = g.m_sx;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3398 m_sy = g.m_sy;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3399 m_sz = g.m_sz;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3400 m_zlim = g.m_zlim;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3401
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3402 return *this;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3403 }
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3404
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3405 static OCTINTERP_API ColumnVector xform_vector (double x, double y, double z);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3406
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3407 static OCTINTERP_API Matrix xform_eye (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3408
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3409 OCTINTERP_API ColumnVector
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3410 transform (double x, double y, double z, bool use_scale = true) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3411
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3412 OCTINTERP_API ColumnVector
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3413 untransform (double x, double y, double z, bool use_scale = true) const;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
3414
10553
f88e3d5d88e2 avoid GCC warnings
John W. Eaton <jwe@octave.org>
parents: 10517
diff changeset
3415 ColumnVector untransform (double x, double y, bool use_scale = true) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3416 { return untransform (x, y, (m_zlim(0)+m_zlim(1))/2, use_scale); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3417
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3418 Matrix xscale (const Matrix& m) const { return m_sx.scale (m); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3419 Matrix yscale (const Matrix& m) const { return m_sy.scale (m); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3420 Matrix zscale (const Matrix& m) const { return m_sz.scale (m); }
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3421
7832
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
3422 Matrix scale (const Matrix& m) const
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3423 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3424 bool has_z = (m.columns () > 2);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3425
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3426 if (m_sx.is_linear () && m_sy.is_linear ()
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3427 && (! has_z || m_sz.is_linear ()))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3428 return m;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3429
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3430 Matrix retval (m.dims ());
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3431
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3432 int r = m.rows ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3433
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3434 for (int i = 0; i < r; i++)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3435 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3436 retval(i,0) = m_sx.scale (m(i,0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3437 retval(i,1) = m_sy.scale (m(i,1));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3438 if (has_z)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3439 retval(i,2) = m_sz.scale (m(i,2));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3440 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3441
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3442 return retval;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3443 }
7832
e06fdf7ea647 Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7830
diff changeset
3444
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3445 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3446 Matrix m_xform;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3447 Matrix m_xform_inv;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3448 scaler m_sx, m_sy, m_sz;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3449 Matrix m_zlim;
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3450 };
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3451
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3452 enum
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3453 {
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3454 AXE_ANY_DIR = 0,
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3455 AXE_DEPTH_DIR = 1,
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3456 AXE_HORZ_DIR = 2,
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3457 AXE_VERT_DIR = 3
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3458 };
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3459
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
3460 class OCTINTERP_API axes : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3461 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3462 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3463
7445
af92b34f3a3a [project @ 2008-02-04 07:53:07 by jwe]
jwe
parents: 7441
diff changeset
3464 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3465 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3466 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3467
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3468 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3469 set_defaults (base_graphics_object& obj, const std::string& mode);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3470
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3471 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3472 remove_child (const graphics_handle& h, bool from_root = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3473
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3474 OCTINTERP_API void adopt (const graphics_handle& h);
25423
13b1b9a0d9c5 Move management of lights in axes from GL to graphics backend.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25418
diff changeset
3475
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3476 const scaler& get_x_scaler (void) const { return m_sx; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3477 const scaler& get_y_scaler (void) const { return m_sy; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3478 const scaler& get_z_scaler (void) const { return m_sz; }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3479
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3480 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3481 get_boundingbox (bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3482 const Matrix& parent_pix_size = Matrix ()) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3483 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3484 get_extent (bool with_text = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3485 bool only_text_height=false) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3486
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3487 OCTINTERP_API double
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3488 get___fontsize_points__ (double box_pix_height = 0) const;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
3489
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3490 void update_boundingbox (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3491 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3492 if (units_is ("normalized"))
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3493 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3494 sync_positions ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3495 base_properties::update_boundingbox ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3496 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3497 }
7828
4739b6a1925c Implement resize handler mechanism (call resizefcn on figure resize and notify children).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7827
diff changeset
3498
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3499 OCTINTERP_API void update_camera (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3500 OCTINTERP_API void update_axes_layout (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3501 OCTINTERP_API void update_aspectratios (void);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3502 void update_transform (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3503 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3504 update_aspectratios ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3505 update_camera ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3506 update_axes_layout ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3507 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3508
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3509 OCTINTERP_API void sync_positions (void);
17098
786bcce466e9 Initialize the tightinset during initialization of axes.
Ben Abbott <bpabbott@mac.com>
parents: 17011
diff changeset
3510
28303
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3511 // Redirect calls to "activepositionproperty" to "positionconstraint".
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3512
28693
2bb050267d74 maint: Remove trailing spaces from code base.
Rik <rik@octave.org>
parents: 28414
diff changeset
3513 std::string get_activepositionproperty (void) const
28303
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3514 {
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3515 std::string cur_val;
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3516
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3517 if (m_positionconstraint.is ("innerposition"))
28303
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3518 cur_val = "position";
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3519 else
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3520 cur_val = "outerposition";
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3521
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3522 return cur_val;
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3523 }
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3524
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3525 void set_activepositionproperty (const octave_value& val)
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3526 {
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3527 // call set method to validate the input
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3528 m_activepositionproperty.set (val);
28303
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3529
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3530 if (val.char_matrix_value ().row_as_string (0) == "position")
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3531 set_positionconstraint ("innerposition");
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3532 else
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3533 set_positionconstraint (val);
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3534 }
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3535
28302
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3536 // Redirect calls to "innerposition" to "position".
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3537
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3538 octave_value get_innerposition (void) const
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3539 {
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3540 return get_position ();
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3541 }
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3542
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3543 void set_innerposition (const octave_value& val)
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3544 {
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3545 set_position (val);
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3546 }
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3547
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3548 OCTINTERP_API void update_autopos (const std::string& elem_type);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3549 OCTINTERP_API void update_xlabel_position (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3550 OCTINTERP_API void update_ylabel_position (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3551 OCTINTERP_API void update_zlabel_position (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3552 OCTINTERP_API void update_title_position (void);
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
3553
7435
464a55f1a5c2 [project @ 2008-02-01 06:47:48 by jwe]
jwe
parents: 7427
diff changeset
3554 graphics_xform get_transform (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3555 { return graphics_xform (m_x_render, m_x_render_inv, m_sx, m_sy, m_sz, m_x_zlim); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3556
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3557 Matrix get_transform_matrix (void) const { return m_x_render; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3558 Matrix get_inverse_transform_matrix (void) const { return m_x_render_inv; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3559 Matrix get_opengl_matrix_1 (void) const { return m_x_gl_mat1; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3560 Matrix get_opengl_matrix_2 (void) const { return m_x_gl_mat2; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3561 Matrix get_transform_zlim (void) const { return m_x_zlim; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3562
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3563 int get_xstate (void) const { return m_xstate; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3564 int get_ystate (void) const { return m_ystate; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3565 int get_zstate (void) const { return m_zstate; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3566 double get_xPlane (void) const { return m_xPlane; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3567 double get_xPlaneN (void) const { return m_xPlaneN; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3568 double get_yPlane (void) const { return m_yPlane; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3569 double get_yPlaneN (void) const { return m_yPlaneN; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3570 double get_zPlane (void) const { return m_zPlane; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3571 double get_zPlaneN (void) const { return m_zPlaneN; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3572 double get_xpTick (void) const { return m_xpTick; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3573 double get_xpTickN (void) const { return m_xpTickN; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3574 double get_ypTick (void) const { return m_ypTick; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3575 double get_ypTickN (void) const { return m_ypTickN; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3576 double get_zpTick (void) const { return m_zpTick; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3577 double get_zpTickN (void) const { return m_zpTickN; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3578 double get_x_min (void) const { return std::min (m_xPlane, m_xPlaneN); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3579 double get_x_max (void) const { return std::max (m_xPlane, m_xPlaneN); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3580 double get_y_min (void) const { return std::min (m_yPlane, m_yPlaneN); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3581 double get_y_max (void) const { return std::max (m_yPlane, m_yPlaneN); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3582 double get_z_min (void) const { return std::min (m_zPlane, m_zPlaneN); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3583 double get_z_max (void) const { return std::max (m_zPlane, m_zPlaneN); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3584 double get_fx (void) const { return m_fx; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3585 double get_fy (void) const { return m_fy; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3586 double get_fz (void) const { return m_fz; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3587 double get_xticklen (void) const { return m_xticklen; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3588 double get_yticklen (void) const { return m_yticklen; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3589 double get_zticklen (void) const { return m_zticklen; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3590 double get_xtickoffset (void) const { return m_xtickoffset; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3591 double get_ytickoffset (void) const { return m_ytickoffset; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3592 double get_ztickoffset (void) const { return m_ztickoffset; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3593 bool get_x2Dtop (void) const { return m_x2Dtop; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3594 bool get_y2Dright (void) const { return m_y2Dright; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3595 bool get_layer2Dtop (void) const { return m_layer2Dtop; }
23859
7148b237f94f Fix regression introduced by cset 06805aabbdd1 (bug #50750).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23803
diff changeset
3596 bool get_is2D (bool include_kids = false) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3597 { return (include_kids ? (m_is2D && ! m_has3Dkids) : m_is2D); }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3598 void set_has3Dkids (bool val) { m_has3Dkids = val; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3599 bool get_xySym (void) const { return m_xySym; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3600 bool get_xyzSym (void) const { return m_xyzSym; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3601 bool get_zSign (void) const { return m_zSign; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3602 bool get_nearhoriz (void) const { return m_nearhoriz; }
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3603
7842
1357bcae6e29 added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7836
diff changeset
3604 ColumnVector pixel2coord (double px, double py) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3605 { return get_transform ().untransform (px, py, (m_x_zlim(0)+m_x_zlim(1))/2); }
7842
1357bcae6e29 added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7836
diff changeset
3606
1357bcae6e29 added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7836
diff changeset
3607 ColumnVector coord2pixel (double x, double y, double z) const
1357bcae6e29 added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7836
diff changeset
3608 { return get_transform ().transform (x, y, z); }
1357bcae6e29 added pixel<->coord transform in axes and use it for display of cursor
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7836
diff changeset
3609
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3610 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3611 zoom_about_point (const std::string& mode, double x, double y,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3612 double factor, bool push_to_zoom_stack = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3613 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3614 zoom (const std::string& mode, double factor,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3615 bool push_to_zoom_stack = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3616 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3617 zoom (const std::string& mode, const Matrix& xl, const Matrix& yl,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3618 bool push_to_zoom_stack = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3619
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3620 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3621 translate_view (const std::string& mode,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3622 double x0, double x1, double y0, double y1,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3623 bool push_to_zoom_stack = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3624
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3625 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3626 pan (const std::string& mode, double factor,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3627 bool push_to_zoom_stack = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3628
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3629 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3630 rotate3d (double x0, double x1, double y0, double y1,
19663
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19659
diff changeset
3631 bool push_to_zoom_stack = true);
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19659
diff changeset
3632
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3633 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3634 rotate_view (double delta_az, double delta_el,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3635 bool push_to_zoom_stack = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3636
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3637 OCTINTERP_API void unzoom (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3638 OCTINTERP_API void update_handlevisibility (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3639 OCTINTERP_API void push_zoom_stack (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3640 OCTINTERP_API void clear_zoom_stack (bool do_unzoom = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3641
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3642 OCTINTERP_API void update_units (const caseless_str& old_units);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3643
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3644 OCTINTERP_API void update_font (std::string prop = "");
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3645
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3646 OCTINTERP_API void update_fontunits (const caseless_str& old_fontunits);
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
3647
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3648 void increase_num_lights (void) { m_num_lights++; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3649 void decrease_num_lights (void) { m_num_lights--; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3650 unsigned int get_num_lights (void) const { return m_num_lights; }
25423
13b1b9a0d9c5 Move management of lights in axes from GL to graphics backend.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25418
diff changeset
3651
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3652 private:
23401
e0c20a22da7e eliminate some errors exposed by -fsanitize=undefined
John W. Eaton <jwe@octave.org>
parents: 23396
diff changeset
3653
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3654 scaler m_sx = scaler ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3655 scaler m_sy = scaler ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3656 scaler m_sz = scaler ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3657
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3658 Matrix m_x_render = Matrix ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3659 Matrix m_x_render_inv = Matrix ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3660 Matrix m_x_gl_mat1 = Matrix ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3661 Matrix m_x_gl_mat2 = Matrix ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3662 Matrix m_x_zlim = Matrix ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3663
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3664 std::list<octave_value> m_zoom_stack = std::list<octave_value> ();
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3665
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3666 // Axes layout data
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3667 int m_xstate = 0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3668 int m_ystate = 0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3669 int m_zstate = 0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3670
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3671 double m_xPlane = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3672 double m_yPlane = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3673 double m_zPlane = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3674
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3675 double m_xPlaneN = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3676 double m_yPlaneN = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3677 double m_zPlaneN = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3678
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3679 double m_xpTick = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3680 double m_ypTick = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3681 double m_zpTick = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3682
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3683 double m_xpTickN = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3684 double m_ypTickN = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3685 double m_zpTickN = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3686
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3687 double m_fx = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3688 double m_fy = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3689 double m_fz = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3690
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3691 double m_xticklen = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3692 double m_yticklen = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3693 double m_zticklen = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3694
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3695 double m_xtickoffset = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3696 double m_ytickoffset = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3697 double m_ztickoffset = 0.0;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3698
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3699 bool m_x2Dtop = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3700 bool m_y2Dright = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3701 bool m_layer2Dtop = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3702 bool m_is2D = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3703 bool m_has3Dkids = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3704 bool m_xySym = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3705 bool m_xyzSym = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3706 bool m_zSign = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3707 bool m_nearhoriz = false;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3708
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3709 unsigned int m_num_lights = 0;
25423
13b1b9a0d9c5 Move management of lights in axes from GL to graphics backend.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25418
diff changeset
3710
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents: 21200
diff changeset
3711 // Text renderer, used for calculation of text (tick labels) size
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3712 octave::text_renderer m_txt_renderer;
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
3713
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3714 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3715 set_text_child (handle_property& h, const std::string& who,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3716 const octave_value& v);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3717
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3718 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3719 delete_text_child (handle_property& h, bool from_root = false);
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
3720
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3721 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3722 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3723 // Programming note: Keep property list sorted if new ones are added.
8222
11badf6c9e9f __go_draw_axes__.m: Support axes interpreter poperty for tick labels.
Ben Abbott <bpabbott@mac.com>
parents: 8210
diff changeset
3724
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
3725 BEGIN_PROPERTIES (axes)
28303
af912e78ce43 Mirror value of axes property "activepositionproperty" from "positionconstraint" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28302
diff changeset
3726 radio_property activepositionproperty gsh , "{outerposition}|position"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3727 row_vector_property alim m , default_lim ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3728 radio_property alimmode , "{auto}|manual"
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3729 // FIXME: not yet implemented
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3730 array_property alphamap , Matrix ()
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3731 radio_property alphascale , "{linear}|log"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3732 color_property ambientlightcolor , color_values (1, 1, 1)
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
3733 bool_property box u , "off"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3734 radio_property boxstyle , "{back}|full"
24127
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3735 row_vector_property cameraposition mu , Matrix (1, 3, 0.0)
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3736 radio_property camerapositionmode u , "{auto}|manual"
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3737 row_vector_property cameratarget mu , Matrix (1, 3, 0.0)
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3738 radio_property cameratargetmode u , "{auto}|manual"
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3739 row_vector_property cameraupvector mu , Matrix (1, 3, 0.0)
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3740 radio_property cameraupvectormode u , "{auto}|manual"
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3741 double_property cameraviewangle mu , 6.6086
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3742 radio_property cameraviewanglemode u , "{auto}|manual"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3743 row_vector_property clim m , default_lim ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3744 radio_property climmode al , "{auto}|manual"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3745 radio_property clippingstyle , "{3dbox}|rectangle"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3746 color_property color , color_property (color_values (1, 1, 1), radio_values ("none"))
23524
7c278572db66 Implement colormap property for axes objects (bug #48667).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 23457
diff changeset
3747 array_property colormap sg , Matrix ()
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
3748 array_property colororder , default_colororder ()
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3749 double_property colororderindex , 1.0
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3750 radio_property colorscale , "{linear}|log"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3751 array_property currentpoint , Matrix (2, 3, 0.0)
23067
6825dd6bbe39 Change some axes properties to row_vector_property (bug #50048).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23057
diff changeset
3752 row_vector_property dataaspectratio mu , Matrix (1, 3, 1.0)
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
3753 radio_property dataaspectratiomode u , "{auto}|manual"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3754 radio_property fontangle u , "{normal}|italic"
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
3755 string_property fontname u , OCTAVE_DEFAULT_FONTNAME
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3756 double_property fontsize mu , 10
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3757 // FIXME: not yet implemented
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3758 radio_property fontsizemode , "{auto}|manual"
26858
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26715
diff changeset
3759 bool_property fontsmoothing u , "on"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3760 radio_property fontunits SU , "{points}|inches|centimeters|normalized|pixels"
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3761 radio_property fontweight u , "{normal}|bold"
21367
0035733e4b3a graphics.in.h: Make sure XXXmode properties switch to "manual" if XXX is set.
Rik <rik@octave.org>
parents: 21323
diff changeset
3762 double_property gridalpha m , 0.15
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3763 radio_property gridalphamode , "{auto}|manual"
26682
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
3764 color_property gridcolor m , color_property (color_values (0.15, 0.15, 0.15), radio_values ("none"))
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3765 radio_property gridcolormode , "{auto}|manual"
22056
05ad23810150 Use default gridlinestyle of '-' for Matlab compatibility.
Rik <rik@octave.org>
parents: 22022
diff changeset
3766 radio_property gridlinestyle , "{-}|--|:|-.|none"
28302
1f5ec8c025bc Mirror value of axes property "innerposition" from "position" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28298
diff changeset
3767 array_property innerposition sg , default_axes_position ()
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3768 // FIXME: Should be an array of "interaction objects". Make it read-only for now.
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3769 any_property interactions r , Matrix ()
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
3770 double_property labelfontsizemultiplier u , 1.1
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3771 radio_property layer u , "{bottom}|top"
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3772 // FIXME: Should be a "layoutoptions" object. Make it read-only for now.
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3773 handle_property layout r , graphics_handle ()
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3774 // FIXME: Should be a "legend" object. Make it read-only for now.
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3775 handle_property legend r , graphics_handle ()
17382
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17104
diff changeset
3776 // FIXME: should be kind of string array.
50b2863d10a6 Create Matlab compatible linestyleorder char matrices (bug #34906)
Rik <rik@octave.org>
parents: 17104
diff changeset
3777 any_property linestyleorder S , "-"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3778 double_property linestyleorderindex , 1.0
7403
135c13496faf [project @ 2008-01-19 06:06:46 by jwe]
jwe
parents: 7395
diff changeset
3779 double_property linewidth , 0.5
21367
0035733e4b3a graphics.in.h: Make sure XXXmode properties switch to "manual" if XXX is set.
Rik <rik@octave.org>
parents: 21323
diff changeset
3780 double_property minorgridalpha m , 0.25
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3781 radio_property minorgridalphamode , "{auto}|manual"
21367
0035733e4b3a graphics.in.h: Make sure XXXmode properties switch to "manual" if XXX is set.
Rik <rik@octave.org>
parents: 21323
diff changeset
3782 color_property minorgridcolor m , color_property (color_values (0.1, 0.1, 0.1), radio_values ("none"))
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3783 radio_property minorgridcolormode , "{auto}|manual"
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3784 radio_property minorgridlinestyle , "{:}|-|--|-.|none"
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3785 radio_property nextplot , "{replace}|add|replacechildren"
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3786 double_property nextseriesindex r , 1.0
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3787 array_property outerposition u , default_axes_outerposition ()
23067
6825dd6bbe39 Change some axes properties to row_vector_property (bug #50048).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23057
diff changeset
3788 row_vector_property plotboxaspectratio mu , Matrix (1, 3, 1.0)
11167
51ac3a08e53c Fix {d,pb}aspectratios for OpenGL backends.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11163
diff changeset
3789 radio_property plotboxaspectratiomode u , "{auto}|manual"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3790 array_property position u , default_axes_position ()
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3791 radio_property positionconstraint , "{outerposition}|innerposition"
18819
92e9d4710f78 Fix typo in graphics.in.h (bug #42535).
Michael Godfrey <michaeldgodfrey@gmail.com>
parents: 17822
diff changeset
3792 radio_property projection , "{orthographic}|perspective"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3793 radio_property sortmethod , "{depth}|childorder"
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3794 radio_property tickdir mu , "{in}|out"
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3795 radio_property tickdirmode u , "{auto}|manual"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3796 // FIXME: Added recently to Matlab, should replace interpreter property.
26055
8b9e6a39e0a2 Allow log axes to be exported correctly in tex formats (bug #50130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26045
diff changeset
3797 radio_property ticklabelinterpreter u , "{tex}|latex|none"
14391
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
3798 array_property ticklength u , default_axes_ticklength ()
7403
135c13496faf [project @ 2008-01-19 06:06:46 by jwe]
jwe
parents: 7395
diff changeset
3799 array_property tightinset r , Matrix (1, 4, 0.0)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3800 handle_property title SOf , make_graphics_handle ("text", m___myhandle__, false, false, false)
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
3801 double_property titlefontsizemultiplier u , 1.1
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
3802 radio_property titlefontweight u , "{bold}|normal"
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3803 // FIXME: Should be a "axestoolbar" object. Make it read-only for now.
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3804 handle_property toolbar r , graphics_handle ()
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
3805 radio_property units SU , "{normalized}|inches|centimeters|points|pixels|characters"
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
3806 array_property view u , default_axes_view ()
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3807 // FIXME: Should be a "ruler" object. Make it read-only for now.
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3808 handle_property xaxis r , graphics_handle ()
24976
47f25e164ab1 Delete graphics properties or allowed values scheduled for deprecation in 4.6
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24795
diff changeset
3809 radio_property xaxislocation u , "{bottom}|top|origin"
26682
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
3810 color_property xcolor mu , color_property (color_values (0.15, 0.15, 0.15), radio_values ("none"))
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3811 radio_property xcolormode , "{auto}|manual"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3812 radio_property xdir u , "{normal}|reverse"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3813 bool_property xgrid , "off"
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3814 handle_property xlabel SOf , make_graphics_handle ("text", m___myhandle__, false, false, false)
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3815 row_vector_property xlim mu , default_lim ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3816 radio_property xlimmode al , "{auto}|manual"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3817 bool_property xminorgrid , "off"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3818 bool_property xminortick , "off"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3819 radio_property xscale alu , "{linear}|log"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3820 row_vector_property xtick mu , default_axes_tick ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3821 // FIXME: should be kind of string array.
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3822 any_property xticklabel S , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3823 radio_property xticklabelmode u , "{auto}|manual"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3824 double_property xticklabelrotation , 0.0
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3825 radio_property xtickmode u , "{auto}|manual"
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3826 // FIXME: Should be a "ruler" object. Make it read-only for now.
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3827 handle_property yaxis r , graphics_handle ()
24976
47f25e164ab1 Delete graphics properties or allowed values scheduled for deprecation in 4.6
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24795
diff changeset
3828 radio_property yaxislocation u , "{left}|right|origin"
26682
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
3829 color_property ycolor mu , color_property (color_values (0.15, 0.15, 0.15), radio_values ("none"))
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3830 radio_property ycolormode , "{auto}|manual"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3831 radio_property ydir u , "{normal}|reverse"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3832 bool_property ygrid , "off"
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3833 handle_property ylabel SOf , make_graphics_handle ("text", m___myhandle__, false, false, false)
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3834 row_vector_property ylim mu , default_lim ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3835 radio_property ylimmode al , "{auto}|manual"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3836 bool_property yminorgrid , "off"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3837 bool_property yminortick , "off"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3838 radio_property yscale alu , "{linear}|log"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3839 row_vector_property ytick mu , default_axes_tick ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3840 any_property yticklabel S , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3841 radio_property yticklabelmode u , "{auto}|manual"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3842 double_property yticklabelrotation , 0.0
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3843 radio_property ytickmode u , "{auto}|manual"
28282
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3844 // FIXME: Should be a "ruler" object. Make it read-only for now.
044cea7947db Add new properties to "axes" graphics object (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28079
diff changeset
3845 handle_property zaxis r , graphics_handle ()
26682
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
3846 color_property zcolor mu , color_property (color_values (0.15, 0.15, 0.15), radio_values ("none"))
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3847 radio_property zcolormode , "{auto}|manual"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3848 radio_property zdir u , "{normal}|reverse"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3849 bool_property zgrid , "off"
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3850 handle_property zlabel SOf , make_graphics_handle ("text", m___myhandle__, false, false, false)
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3851 row_vector_property zlim mu , default_lim ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3852 radio_property zlimmode al , "{auto}|manual"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3853 bool_property zminorgrid , "off"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3854 bool_property zminortick , "off"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3855 radio_property zscale alu , "{linear}|log"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3856 row_vector_property ztick mu , default_axes_tick ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3857 any_property zticklabel S , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3858 radio_property zticklabelmode u , "{auto}|manual"
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3859 double_property zticklabelrotation , 0.0
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3860 radio_property ztickmode u , "{auto}|manual"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
3861
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3862 // Octave-specific properties
24501
2f10c3265607 Make sure axes "colormap" property listeners are executed (bug #52799).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24452
diff changeset
3863 array_property __colormap__ hu , Matrix ()
20258
530803d4f65f Update root, figure, and axes graphics object properties.
Rik <rik@octave.org>
parents: 20232
diff changeset
3864 double_property mousewheelzoom , 0.5
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
3865
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3866 // hidden properties for alignment of subplots
22622
4191f8b5070c Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents: 22407
diff changeset
3867 radio_property __autopos_tag__ h , "{none}|subplot"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3868 // hidden properties for inset
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
3869 array_property looseinset hu , Matrix (1, 4, 0.0)
12126
85f9a5b211fd restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents: 11586
diff changeset
3870 // hidden properties for minor ticks
22623
76f1164d2135 Rename [xyz]mtick properties to [xyz]minortickvalues (bug #49205).
Rik <rik@octave.org>
parents: 22622
diff changeset
3871 row_vector_property xminortickvalues h , Matrix ()
76f1164d2135 Rename [xyz]mtick properties to [xyz]minortickvalues (bug #49205).
Rik <rik@octave.org>
parents: 22622
diff changeset
3872 row_vector_property yminortickvalues h , Matrix ()
76f1164d2135 Rename [xyz]mtick properties to [xyz]minortickvalues (bug #49205).
Rik <rik@octave.org>
parents: 22622
diff changeset
3873 row_vector_property zminortickvalues h , Matrix ()
19047
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19044
diff changeset
3874 // hidden property for text rendering
22622
4191f8b5070c Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents: 22407
diff changeset
3875 double_property __fontsize_points__ hgr , 0
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
3876 END_PROPERTIES
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
3877
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
3878 protected:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3879 OCTINTERP_API void init (void);
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3880
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3881 private:
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3882
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3883 std::string
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3884 get_scale (const std::string& scale, const Matrix& lims)
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3885 {
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3886 std::string retval = scale;
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3887
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3888 if (scale == "log" && lims.numel () > 1 && lims(0) < 0 && lims(1) < 0)
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3889 retval = "neglog";
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3890
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3891 return retval;
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3892 }
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3893
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3894 void update_xscale (void)
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3895 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3896 m_sx = get_scale (get_xscale (), m_xlim.get ().matrix_value ());
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3897 }
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3898
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3899 void update_yscale (void)
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3900 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3901 m_sy = get_scale (get_yscale (), m_ylim.get ().matrix_value ());
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3902 }
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3903
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3904 void update_zscale (void)
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3905 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3906 m_sz = get_scale (get_zscale (), m_zlim.get ().matrix_value ());
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
3907 }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3908
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3909 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
3910 update_label_color (handle_property label, color_property col);
23001
14f1738a56ae Use C++ updaters for labels color (bug #49980).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22619
diff changeset
3911 void update_xcolor (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3912 { update_label_color (m_xlabel, m_xcolor); }
23001
14f1738a56ae Use C++ updaters for labels color (bug #49980).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22619
diff changeset
3913
14f1738a56ae Use C++ updaters for labels color (bug #49980).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22619
diff changeset
3914 void update_ycolor (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3915 { update_label_color (m_ylabel, m_ycolor); }
23001
14f1738a56ae Use C++ updaters for labels color (bug #49980).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22619
diff changeset
3916
14f1738a56ae Use C++ updaters for labels color (bug #49980).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22619
diff changeset
3917 void update_zcolor (void)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3918 { update_label_color (m_zlabel, m_zcolor); }
23001
14f1738a56ae Use C++ updaters for labels color (bug #49980).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22619
diff changeset
3919
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12433
diff changeset
3920 void update_view (void) { sync_positions (); }
24127
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3921
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3922 void update_cameraposition (void) { update_transform (); }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3923 void update_cameratarget (void) { update_transform (); }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3924 void update_cameraupvector (void) { update_transform (); }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3925 void update_cameraviewangle (void) { update_transform (); }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3926
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3927 void update_camerapositionmode (void)
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3928 {
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3929 if (camerapositionmode_is ("auto"))
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3930 update_cameraposition ();
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3931 }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3932 void update_cameratargetmode (void)
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3933 {
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3934 if (cameratargetmode_is ("auto"))
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3935 update_cameratarget ();
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3936 }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3937 void update_cameraupvectormode (void)
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3938 {
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3939 if (cameraupvectormode_is ("auto"))
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3940 update_cameraupvector ();
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3941 }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3942 void update_cameraviewanglemode (void)
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3943 {
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3944 if (cameraviewanglemode_is ("auto"))
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3945 update_cameraviewangle ();
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3946 }
b188be2b962b Call update_transform on camera property change (bug #44503)
Colin Macdonald <cbm@m.fsf.org>
parents: 24120
diff changeset
3947
12441
b932ae4381da improvements in synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12440
diff changeset
3948 void update_dataaspectratio (void) { sync_positions (); }
b932ae4381da improvements in synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12440
diff changeset
3949 void update_dataaspectratiomode (void) { sync_positions (); }
b932ae4381da improvements in synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12440
diff changeset
3950 void update_plotboxaspectratio (void) { sync_positions (); }
b932ae4381da improvements in synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12440
diff changeset
3951 void update_plotboxaspectratiomode (void) { sync_positions (); }
7427
65f0a8ced9d2 [project @ 2008-01-28 22:42:18 by jwe]
jwe
parents: 7419
diff changeset
3952
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
3953 void update_layer (void) { update_axes_layout (); }
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
3954 void update_box (void)
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
3955 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3956 if (m_xticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3957 calc_ticklabels (m_xtick, m_xticklabel, m_xscale.is ("log"),
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3958 xaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3959 m_yscale.is ("log") ? 2 :
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3960 (yaxislocation_is ("origin") ? 0 :
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3961 (yaxislocation_is ("left") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3962 m_xlim);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3963 if (m_yticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3964 calc_ticklabels (m_ytick, m_yticklabel, m_yscale.is ("log"),
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3965 yaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3966 m_xscale.is ("log") ? 2 :
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3967 (xaxislocation_is ("origin") ? 0 :
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3968 (xaxislocation_is ("bottom") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3969 m_ylim);
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
3970 }
12503
2c66314447f1 update axis label position after axis location changes
Konstantinos Poulios <logari81@gmail.com>
parents: 12496
diff changeset
3971 void update_yaxislocation (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3972 {
19652
5b4fd7ebcfc6 Update "tightinset" when "x/yaxislocation" is changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19597
diff changeset
3973 sync_positions ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3974 update_axes_layout ();
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3975 if (m_xticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3976 calc_ticklabels (m_xtick, m_xticklabel, m_xscale.is ("log"),
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3977 xaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3978 m_yscale.is ("log") ? 2 :
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3979 (yaxislocation_is ("origin") ? 0 :
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3980 (yaxislocation_is ("left") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3981 m_xlim);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3982 if (m_yticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3983 calc_ticklabels (m_ytick, m_yticklabel, m_yscale.is ("log"),
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3984 yaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3985 m_xscale.is ("log") ? 2 :
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3986 (xaxislocation_is ("origin") ? 0 :
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3987 (xaxislocation_is ("bottom") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3988 m_ylim);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3989 update_ylabel_position ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3990 }
12503
2c66314447f1 update axis label position after axis location changes
Konstantinos Poulios <logari81@gmail.com>
parents: 12496
diff changeset
3991 void update_xaxislocation (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3992 {
19652
5b4fd7ebcfc6 Update "tightinset" when "x/yaxislocation" is changed
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19597
diff changeset
3993 sync_positions ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
3994 update_axes_layout ();
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3995 if (m_xticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3996 calc_ticklabels (m_xtick, m_xticklabel, m_xscale.is ("log"),
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3997 xaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3998 m_yscale.is ("log") ? 2 :
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
3999 (yaxislocation_is ("origin") ? 0 :
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
4000 (yaxislocation_is ("left") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4001 m_xlim);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4002 if (m_yticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4003 calc_ticklabels (m_ytick, m_yticklabel, m_yscale.is ("log"),
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
4004 yaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4005 m_xscale.is ("log") ? 2 :
24191
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
4006 (xaxislocation_is ("origin") ? 0 :
fdd67d871a72 Keep manually set tick labels (bug #52284).
Markus Mützel <markus.muetzel@gmx.de>
parents: 24127
diff changeset
4007 (xaxislocation_is ("bottom") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4008 m_ylim);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4009 update_xlabel_position ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4010 }
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4011
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4012 void update_xdir (void) { update_camera (); update_axes_layout (); }
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4013 void update_ydir (void) { update_camera (); update_axes_layout (); }
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4014 void update_zdir (void) { update_camera (); update_axes_layout (); }
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4015
14391
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
4016 void update_ticklength (void);
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
4017 void update_tickdir (void) { update_ticklength (); }
c9ec21bef97a Fix ticklength updating (bug # 35438).
Ben Abbott <bpabbott@mac.com>
parents: 14357
diff changeset
4018 void update_tickdirmode (void) { update_ticklength (); }
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4019
26055
8b9e6a39e0a2 Allow log axes to be exported correctly in tex formats (bug #50130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26045
diff changeset
4020 void update_ticklabelinterpreter (void)
8b9e6a39e0a2 Allow log axes to be exported correctly in tex formats (bug #50130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26045
diff changeset
4021 {
29650
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4022 update_xtick (false);
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4023 update_ytick (false);
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4024 update_ztick (true);
26055
8b9e6a39e0a2 Allow log axes to be exported correctly in tex formats (bug #50130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26045
diff changeset
4025 }
26469
bf835b1d04b1 Don't use C++ callbacks to notify position changes from Qt figures (bug #48519)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26383
diff changeset
4026
29650
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4027 void update_xtick (bool sync_pos = true)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4028 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4029 calc_ticks_and_lims (m_xlim, m_xtick, m_xminortickvalues,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4030 m_xlimmode.is ("auto"), m_xtickmode.is ("auto"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4031 m_xscale.is ("log"));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4032 if (m_xticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4033 calc_ticklabels (m_xtick, m_xticklabel, m_xscale.is ("log"),
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4034 xaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4035 m_yscale.is ("log") ? 2 :
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4036 (yaxislocation_is ("origin") ? 0 :
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4037 (yaxislocation_is ("left") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4038 m_xlim);
29650
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4039
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4040 if (sync_pos)
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4041 sync_positions ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4042 }
29650
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4043 void update_ytick (bool sync_pos = true)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4044 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4045 calc_ticks_and_lims (m_ylim, m_ytick, m_yminortickvalues,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4046 m_ylimmode.is ("auto"), m_ytickmode.is ("auto"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4047 m_yscale.is ("log"));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4048 if (m_yticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4049 calc_ticklabels (m_ytick, m_yticklabel, m_yscale.is ("log"),
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4050 yaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4051 m_xscale.is ("log") ? 2 :
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4052 (xaxislocation_is ("origin") ? 0 :
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4053 (xaxislocation_is ("bottom") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4054 m_ylim);
29650
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4055
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4056 if (sync_pos)
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4057 sync_positions ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4058 }
29650
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4059 void update_ztick (bool sync_pos = true)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4060 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4061 calc_ticks_and_lims (m_zlim, m_ztick, m_zminortickvalues,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4062 m_zlimmode.is ("auto"), m_ztickmode.is ("auto"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4063 m_zscale.is ("log"));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4064 if (m_zticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4065 calc_ticklabels (m_ztick, m_zticklabel, m_zscale.is ("log"), false,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4066 2, m_zlim);
29650
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4067
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4068 if (sync_pos)
360d21b028b1 Synchronize positions optionally when updating axes ticks (bug #60583)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29572
diff changeset
4069 sync_positions ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4070 }
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9188
diff changeset
4071
11394
ecd87194adb6 Update ticks after {xyz}tickmode is set to auto
Konstantinos Poulios <logari81@googlemail.com>
parents: 11385
diff changeset
4072 void update_xtickmode (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4073 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4074 if (m_xtickmode.is ("auto"))
22710
0cbe4714ce1b Correct locations of minor grid lines for manual ticks (bug #45850).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22665
diff changeset
4075 update_xtick ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4076 }
11394
ecd87194adb6 Update ticks after {xyz}tickmode is set to auto
Konstantinos Poulios <logari81@googlemail.com>
parents: 11385
diff changeset
4077 void update_ytickmode (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4078 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4079 if (m_ytickmode.is ("auto"))
22710
0cbe4714ce1b Correct locations of minor grid lines for manual ticks (bug #45850).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22665
diff changeset
4080 update_ytick ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4081 }
11394
ecd87194adb6 Update ticks after {xyz}tickmode is set to auto
Konstantinos Poulios <logari81@googlemail.com>
parents: 11385
diff changeset
4082 void update_ztickmode (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4083 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4084 if (m_ztickmode.is ("auto"))
22710
0cbe4714ce1b Correct locations of minor grid lines for manual ticks (bug #45850).
Markus Mützel <markus.muetzel@gmx.de>
parents: 22665
diff changeset
4085 update_ztick ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4086 }
11394
ecd87194adb6 Update ticks after {xyz}tickmode is set to auto
Konstantinos Poulios <logari81@googlemail.com>
parents: 11385
diff changeset
4087
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9188
diff changeset
4088 void update_xticklabelmode (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4089 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4090 if (m_xticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4091 calc_ticklabels (m_xtick, m_xticklabel, m_xscale.is ("log"),
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4092 xaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4093 m_yscale.is ("log") ? 2 :
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4094 (yaxislocation_is ("origin") ? 0 :
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4095 (yaxislocation_is ("left") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4096 m_xlim);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4097 }
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9188
diff changeset
4098 void update_yticklabelmode (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4099 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4100 if (m_yticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4101 calc_ticklabels (m_ytick, m_yticklabel, m_yscale.is ("log"),
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4102 yaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4103 m_xscale.is ("log") ? 2 :
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4104 (xaxislocation_is ("origin") ? 0 :
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4105 (xaxislocation_is ("bottom") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4106 m_ylim);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4107 }
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9188
diff changeset
4108 void update_zticklabelmode (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4109 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4110 if (m_zticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4111 calc_ticklabels (m_ztick, m_zticklabel, m_zscale.is ("log"), false, 2, m_zlim);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4112 }
9347
3da821b161e9 imported patch ticklabel
Michael Goffioul <michael.goffioul@gmail.com>
parents: 9188
diff changeset
4113
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4114 void update_fontname (void)
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4115 {
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4116 update_font ("fontname");
19684
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4117 sync_positions ();
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4118 }
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4119 void update_fontsize (void)
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4120 {
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4121 update_font ("fontsize");
19684
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4122 sync_positions ();
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4123 }
26858
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26715
diff changeset
4124 void update_fontsmoothing (void)
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26715
diff changeset
4125 {
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26715
diff changeset
4126 update_font ("fontsmoothing");
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26715
diff changeset
4127 }
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4128 void update_fontangle (void)
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4129 {
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4130 update_font ("fontangle");
19684
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4131 sync_positions ();
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4132 }
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4133 void update_fontweight (void)
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4134 {
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4135 update_font ("fontweight");
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4136 sync_positions ();
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4137 }
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4138
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4139 void update_titlefontsizemultiplier (void)
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4140 {
26371
87f11da73b19 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26194
diff changeset
4141 // update_font handles title and axis labels
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4142 update_font ("fontsize");
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4143 sync_positions ();
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4144 }
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4145
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4146 void update_labelfontsizemultiplier (void)
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4147 {
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4148 update_font ("fontsize");
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4149 sync_positions ();
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4150 }
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4151
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4152 void update_titlefontweight (void)
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4153 {
26371
87f11da73b19 graphics.h: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26194
diff changeset
4154 // update_font handles title and axis labels
22723
03cebe1fb0e3 Update labels and title font according to axes font properties (bug #49469)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22710
diff changeset
4155 update_font ("fontweight");
19684
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4156 sync_positions ();
2b93834e5ede Update tightinset when "font*" properties are changed (bug #39581)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19678
diff changeset
4157 }
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
4158
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4159 OCTINTERP_API void update_outerposition (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4160 OCTINTERP_API void update_position (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4161 OCTINTERP_API void update_looseinset (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4162
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4163 OCTINTERP_API double calc_tick_sep (double minval, double maxval);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4164 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4165 calc_ticks_and_lims (array_property& lims, array_property& ticks,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4166 array_property& mticks, bool limmode_is_auto,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4167 bool tickmode_is_auto, bool is_logscale);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4168 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4169 calc_ticklabels (const array_property& ticks, any_property& labels,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4170 bool is_logscale, const bool is_origin,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4171 const int other_axislocation,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4172 const array_property& axis_lims);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4173 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4174 get_ticklabel_extents (const Matrix& ticks,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4175 const string_vector& ticklabels,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4176 const Matrix& limits);
12334
63dc132a1000 Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents: 12327
diff changeset
4177
7854
228858e69bd1 added {x,y,z}lim sanity check
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7850
diff changeset
4178 void fix_limits (array_property& lims)
228858e69bd1 added {x,y,z}lim sanity check
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7850
diff changeset
4179 {
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
4180 if (lims.get ().isempty ())
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4181 return;
7854
228858e69bd1 added {x,y,z}lim sanity check
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7850
diff changeset
4182
228858e69bd1 added {x,y,z}lim sanity check
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7850
diff changeset
4183 Matrix l = lims.get ().matrix_value ();
228858e69bd1 added {x,y,z}lim sanity check
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7850
diff changeset
4184 if (l(0) > l(1))
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4185 {
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4186 l(0) = 0;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4187 l(1) = 1;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4188 lims = l;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4189 }
7854
228858e69bd1 added {x,y,z}lim sanity check
Shai Ayal <shaiay@users.sourceforge.net>
parents: 7850
diff changeset
4190 else if (l(0) == l(1))
10317
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4191 {
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4192 l(0) -= 0.5;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4193 l(1) += 0.5;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4194 lims = l;
42d098307c30 untabify additional source files
John W. Eaton <jwe@octave.org>
parents: 10289
diff changeset
4195 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4196 }
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4197
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4198 OCTINTERP_API Matrix calc_tightbox (const Matrix& init_pos);
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12433
diff changeset
4199
23524
7c278572db66 Implement colormap property for axes objects (bug #48667).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 23457
diff changeset
4200 void set_colormap (const octave_value& val)
7c278572db66 Implement colormap property for axes objects (bug #48667).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 23457
diff changeset
4201 {
7c278572db66 Implement colormap property for axes objects (bug #48667).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 23457
diff changeset
4202 set___colormap__ (val);
7c278572db66 Implement colormap property for axes objects (bug #48667).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 23457
diff changeset
4203 }
7c278572db66 Implement colormap property for axes objects (bug #48667).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 23457
diff changeset
4204
24501
2f10c3265607 Make sure axes "colormap" property listeners are executed (bug #52799).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24452
diff changeset
4205 void update___colormap__ (void)
2f10c3265607 Make sure axes "colormap" property listeners are executed (bug #52799).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24452
diff changeset
4206 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4207 m_colormap.run_listeners (GCB_POSTSET);
24501
2f10c3265607 Make sure axes "colormap" property listeners are executed (bug #52799).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24452
diff changeset
4208 }
2f10c3265607 Make sure axes "colormap" property listeners are executed (bug #52799).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 24452
diff changeset
4209
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4210 OCTINTERP_API octave_value get_colormap (void) const;
23524
7c278572db66 Implement colormap property for axes objects (bug #48667).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 23457
diff changeset
4211
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4212 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4213 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4214 get_axis_limits (double xmin, double xmax,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4215 double min_pos, double max_neg,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4216 const bool logscale);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4217
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4218 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4219 check_axis_limits (Matrix &limits, const Matrix kids,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4220 const bool logscale, char &update_type);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4221
19663
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19659
diff changeset
4222 void update_xlim ()
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4223 {
24030
ec3d37eeafa2 Auto-adjust limits that span 0 on logarithmic axes (bug #43606).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23859
diff changeset
4224 update_axis_limits ("xlim");
ec3d37eeafa2 Auto-adjust limits that span 0 on logarithmic axes (bug #43606).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23859
diff changeset
4225
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4226 calc_ticks_and_lims (m_xlim, m_xtick, m_xminortickvalues,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4227 m_xlimmode.is ("auto"), m_xtickmode.is ("auto"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4228 m_xscale.is ("log"));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4229 if (m_xticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4230 calc_ticklabels (m_xtick, m_xticklabel, m_xscale.is ("log"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4231 m_xaxislocation.is ("origin"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4232 m_yscale.is ("log") ? 2 :
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4233 (yaxislocation_is ("origin") ? 0 :
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4234 (yaxislocation_is ("left") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4235 m_xlim);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4236
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4237 fix_limits (m_xlim);
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7854
diff changeset
4238
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
4239 update_xscale ();
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
4240
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4241 update_axes_layout ();
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4242 }
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4243
19663
dfea01b3425f more mouse interaction features for Qt plotting widget
John W. Eaton <jwe@octave.org>
parents: 19659
diff changeset
4244 void update_ylim (void)
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4245 {
24030
ec3d37eeafa2 Auto-adjust limits that span 0 on logarithmic axes (bug #43606).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23859
diff changeset
4246 update_axis_limits ("ylim");
ec3d37eeafa2 Auto-adjust limits that span 0 on logarithmic axes (bug #43606).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23859
diff changeset
4247
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4248 calc_ticks_and_lims (m_ylim, m_ytick, m_yminortickvalues,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4249 m_ylimmode.is ("auto"), m_ytickmode.is ("auto"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4250 m_yscale.is ("log"));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4251 if (m_yticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4252 calc_ticklabels (m_ytick, m_yticklabel, m_yscale.is ("log"),
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4253 yaxislocation_is ("origin"),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4254 m_xscale.is ("log") ? 2 :
23116
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4255 (xaxislocation_is ("origin") ? 0 :
868daa374c49 Improve support of "(xy)axislocation" "origin" (bug #48562).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23084
diff changeset
4256 (xaxislocation_is ("bottom") ? -1 : 1)),
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4257 m_ylim);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4258
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4259 fix_limits (m_ylim);
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7854
diff changeset
4260
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
4261 update_yscale ();
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
4262
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4263 update_axes_layout ();
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4264 }
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4265
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4266 void update_zlim (void)
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4267 {
24030
ec3d37eeafa2 Auto-adjust limits that span 0 on logarithmic axes (bug #43606).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23859
diff changeset
4268 update_axis_limits ("zlim");
ec3d37eeafa2 Auto-adjust limits that span 0 on logarithmic axes (bug #43606).
Markus Mützel <markus.muetzel@gmx.de>
parents: 23859
diff changeset
4269
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4270 calc_ticks_and_lims (m_zlim, m_ztick, m_zminortickvalues,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4271 m_zlimmode.is ("auto"), m_ztickmode.is ("auto"),
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4272 m_zscale.is ("log"));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4273 if (m_zticklabelmode.is ("auto"))
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4274 calc_ticklabels (m_ztick, m_zticklabel, m_zscale.is ("log"), false,
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4275 2, m_zlim);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4276
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4277 fix_limits (m_zlim);
7855
f317f14516cb Add zoom stack facility in axes object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7854
diff changeset
4278
14324
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
4279 update_zscale ();
5a2b012b10c7 allow zooming for logscale plots
John W. Eaton <jwe@octave.org>
parents: 14314
diff changeset
4280
12327
2ad37783bf01 Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents: 12324
diff changeset
4281 update_axes_layout ();
7446
4bfbec4b0e24 [project @ 2008-02-04 21:17:18 by jwe]
jwe
parents: 7445
diff changeset
4282 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4283
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
4284 void trigger_normals_calc (void);
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
4285
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4286 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4287
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4288 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4289 properties m_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4290
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4291 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4292 axes (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4293 : base_graphics_object (), m_properties (mh, p), m_default_properties ()
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4294 {
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4295 m_properties.update_transform ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4296 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4297
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
4298 ~axes (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4299
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4300 void override_defaults (base_graphics_object& obj)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4301 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4302 // Allow parent (figure) to override first (properties knows how
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4303 // to find the parent object).
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4304 m_properties.override_defaults (obj);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4305
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4306 // Now override with our defaults. If the default_properties
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4307 // list includes the properties for all defaults (line,
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4308 // surface, etc.) then we don't have to know the type of OBJ
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4309 // here, we just call its set function and let it decide which
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4310 // properties from the list to use.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4311 obj.set_from_list (m_default_properties);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4312 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4313
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
4314 void set (const caseless_str& name, const octave_value& value)
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4315 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4316 if (name.compare ("default", 7))
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4317 // strip "default", pass rest to function that will
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4318 // parse the remainder and add the element to the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4319 // default_properties map.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4320 m_default_properties.set (name.substr (7), value);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4321 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4322 m_properties.set (name, value);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4323 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4324
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4325 void set_defaults (const std::string& mode)
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4326 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4327 m_properties.set_defaults (*this, mode);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4328 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4329
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7176
diff changeset
4330 octave_value get (const caseless_str& name) const
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4331 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4332 octave_value retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4333
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4334 // FIXME: finish this.
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4335 if (name.compare ("default", 7))
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4336 retval = get_default (name.substr (7));
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4337 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4338 retval = m_properties.get (name);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4339
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4340 return retval;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4341 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4342
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4343 OCTINTERP_API octave_value get_default (const caseless_str& name) const;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4344
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4345 octave_value get_defaults (void) const
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4346 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4347 return m_default_properties.as_struct ("default");
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4348 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4349
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
4350 property_list get_defaults_list (void) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
4351 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4352 return m_default_properties;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4353 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4354
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4355 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4356
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4357 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
4358
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4359 OCTINTERP_API void update_axis_limits (const std::string& axis_type);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4360
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4361 OCTINTERP_API void update_axis_limits (const std::string& axis_type,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4362 const graphics_handle& h);
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
4363
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4364 bool valid_object (void) const { return true; }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4365
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4366 OCTINTERP_API void reset_default_properties (void);
10722
755fcb5baad3 Add the reset built function
David Bateman <dbateman@free.fr>
parents: 10717
diff changeset
4367
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4368 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4369 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4370 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4371 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4372 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4373 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4374 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4375
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
4376 protected:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4377 OCTINTERP_API void initialize (const graphics_object& go);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
4378
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4379 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4380 property_list m_default_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4381 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4382
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4383 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4384
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
4385 class OCTINTERP_API line : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4386 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4387 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4388
7821
f79dcba526a8 Export nested properties classes of all graphics object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7527
diff changeset
4389 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4390 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4391 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4392
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4393 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4394 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4395 // Programming note: Keep property list sorted if new ones are added.
7366
2a2115742cb5 [project @ 2008-01-13 06:46:39 by jwe]
jwe
parents: 7365
diff changeset
4396
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
4397 BEGIN_PROPERTIES (line)
20738
f90295782d60 Accept color value of "none" for line objects (bug #44224).
Rik <rik@octave.org>
parents: 20730
diff changeset
4398 color_property color , color_property (color_values (0, 0, 0), radio_values ("none"))
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4399 string_property displayname , ""
22759
39f39eb4e476 Implement "linejoin" property (bug #48387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 22755
diff changeset
4400 radio_property linejoin , "{round}|miter|chamfer"
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4401 radio_property linestyle , "{-}|--|:|-.|none"
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4402 double_property linewidth , 0.5
30253
20fd3c03fd74 Add new plot marker styles '|' and '_' (bug #61350)
Rik <rik@octave.org>
parents: 30155
diff changeset
4403 radio_property marker , "{none}|+|o|*|.|x|||_|s|square|d|diamond|^|v|>|<|p|pentagram|h|hexagram"
17645
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
4404 color_property markeredgecolor , color_property (radio_values ("{auto}|none"), color_values (0, 0, 0))
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
4405 color_property markerfacecolor , color_property (radio_values ("auto|{none}"), color_values (0, 0, 0))
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4406 double_property markersize , 6
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4407 row_vector_property xdata u , default_data ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4408 string_property xdatasource , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4409 row_vector_property ydata u , default_data ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4410 string_property ydatasource , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4411 row_vector_property zdata u , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4412 string_property zdatasource , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4413
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4414 // hidden properties for limit computation
26715
24e11ee4fe45 Improve calculation of zlim and aspect ratios for 2d objects (bug #55634).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26712
diff changeset
4415 row_vector_property xlim hlr , default_data_lim ()
24e11ee4fe45 Improve calculation of zlim and aspect ratios for 2d objects (bug #55634).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26712
diff changeset
4416 row_vector_property ylim hlr , default_data_lim ()
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4417 row_vector_property zlim hlr , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4418 bool_property xliminclude hl , "on"
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4419 bool_property yliminclude hl , "on"
26715
24e11ee4fe45 Improve calculation of zlim and aspect ratios for 2d objects (bug #55634).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26712
diff changeset
4420 bool_property zliminclude hl , "on"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4421 END_PROPERTIES
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4422
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
4423 protected:
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
4424 void init (void)
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
4425 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4426 m_linewidth.add_constraint ("min", 0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4427 m_markersize.add_constraint ("min", 0, false);
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
4428 }
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
4429
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4430 private:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4431 OCTINTERP_API Matrix compute_xlim (void) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4432 OCTINTERP_API Matrix compute_ylim (void) const;
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4433
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4434 void update_xdata (void) { set_xlim (compute_xlim ()); }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4435
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4436 void update_ydata (void) { set_ylim (compute_ylim ()); }
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4437
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4438 void update_zdata (void) { set_zlim (m_zdata.get_limits ()); }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4439 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4440
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4441 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4442 properties m_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4443
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4444 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4445 line (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4446 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
4447 { }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4448
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
4449 ~line (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4450
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4451 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4452
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4453 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
4454
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4455 bool valid_object (void) const { return true; }
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4456
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4457 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4458 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4459 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4460 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4461 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4462 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4463 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4464 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4465
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4466 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4467
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
4468 class OCTINTERP_API text : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4469 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4470 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4471
7821
f79dcba526a8 Export nested properties classes of all graphics object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7527
diff changeset
4472 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4473 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4474 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4475
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4476 OCTINTERP_API double
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4477 get___fontsize_points__ (double box_pix_height = 0) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4478
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4479 OCTINTERP_API void update_text_extent (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4480
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4481 OCTINTERP_API void update_font (void);
25884
4e108574385c Improve OpenGL rendering on high resolution screens with Qt 5 (bug #49053)
John Swensen <jpswensen@gmail.com>
parents: 25867
diff changeset
4482
14448
7a49519913e3 Add custom inline set_postion method for text objects which accepts
Ben Abbott <bpabbott@mac.com>
parents: 14391
diff changeset
4483 void set_position (const octave_value& val)
7a49519913e3 Add custom inline set_postion method for text objects which accepts
Ben Abbott <bpabbott@mac.com>
parents: 14391
diff changeset
4484 {
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4485 octave_value new_val (val);
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4486
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4487 if (new_val.numel () == 2)
14448
7a49519913e3 Add custom inline set_postion method for text objects which accepts
Ben Abbott <bpabbott@mac.com>
parents: 14391
diff changeset
4488 {
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4489 dim_vector dv (1, 3);
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4490
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4491 new_val = new_val.resize (dv, true);
14448
7a49519913e3 Add custom inline set_postion method for text objects which accepts
Ben Abbott <bpabbott@mac.com>
parents: 14391
diff changeset
4492 }
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4493
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4494 if (m_position.set (new_val, false))
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4495 {
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4496 set_positionmode ("manual");
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4497 update_position ();
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4498 m_position.run_listeners (GCB_POSTSET);
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4499 mark_modified ();
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4500 }
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4501 else
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
4502 set_positionmode ("manual");
14448
7a49519913e3 Add custom inline set_postion method for text objects which accepts
Ben Abbott <bpabbott@mac.com>
parents: 14391
diff changeset
4503 }
7a49519913e3 Add custom inline set_postion method for text objects which accepts
Ben Abbott <bpabbott@mac.com>
parents: 14391
diff changeset
4504
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4505 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4506 // properties declarations.
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
4507 // Programming note: Keep property list sorted if new ones are added.
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4508
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
4509 BEGIN_PROPERTIES (text)
17646
993ea21b7e03 graphics.in.h: Text "edgecolor" property should default to "none".
Rik <rik@octave.org>
parents: 17645
diff changeset
4510 color_property backgroundcolor , color_property (radio_values ("{none}"), color_values (1, 1, 1))
26682
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4511 color_property color u , color_property (color_values (0, 0, 0), radio_values ("none"))
17645
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
4512 color_property edgecolor , color_property (radio_values ("{none}"), color_values (0, 0, 0))
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4513 bool_property editing , "off"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4514 array_property extent rG , Matrix (1, 4, 0.0)
28079
999351c323ce remove deprecated "oblique" value from fontangle graphics property
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
4515 radio_property fontangle u , "{normal}|italic"
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4516 string_property fontname u , OCTAVE_DEFAULT_FONTNAME
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4517 double_property fontsize u , 10
26858
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26715
diff changeset
4518 bool_property fontsmoothing u , "on"
19047
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19044
diff changeset
4519 radio_property fontunits SU , "inches|centimeters|normalized|{points}|pixels"
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
4520 radio_property fontweight u , "{normal}|bold"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4521 radio_property horizontalalignment mu , "{left}|center|right"
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4522 radio_property interpreter u , "{tex}|none|latex"
7377
46b58515067d [project @ 2008-01-15 06:57:15 by jwe]
jwe
parents: 7370
diff changeset
4523 radio_property linestyle , "{-}|--|:|-.|none"
46b58515067d [project @ 2008-01-15 06:57:15 by jwe]
jwe
parents: 7370
diff changeset
4524 double_property linewidth , 0.5
26185
ef0998af70f9 Change "Margin" default of text object to 3.
Rik <rik@octave.org>
parents: 26129
diff changeset
4525 double_property margin , 3
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4526 array_property position smu , Matrix (1, 3, 0.0)
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4527 double_property rotation mu , 0
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4528 text_label_property string u , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4529 radio_property units u , "{data}|pixels|normalized|inches|centimeters|points"
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11394
diff changeset
4530 radio_property verticalalignment mu , "top|cap|{middle}|baseline|bottom"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4531
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4532 // hidden properties for limit computation
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4533 row_vector_property xlim hlr , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4534 row_vector_property ylim hlr , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4535 row_vector_property zlim hlr , Matrix ()
11281
3f952c6973f7 graphics.h.in: Change intended for 11272.
Ben Abbott <bpabbott@mac.com>
parents: 11250
diff changeset
4536 bool_property xliminclude hl , "off"
3f952c6973f7 graphics.h.in: Change intended for 11272.
Ben Abbott <bpabbott@mac.com>
parents: 11250
diff changeset
4537 bool_property yliminclude hl , "off"
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4538 bool_property zliminclude hl , "off"
11385
71e7467fbd34 Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents: 11384
diff changeset
4539 // hidden properties for auto-positioning
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4540 radio_property positionmode hu , "{auto}|manual"
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4541 radio_property rotationmode hu , "{auto}|manual"
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4542 radio_property horizontalalignmentmode hu , "{auto}|manual"
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4543 radio_property verticalalignmentmode hu , "{auto}|manual"
22622
4191f8b5070c Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents: 22407
diff changeset
4544 radio_property __autopos_tag__ h , "{none}|xlabel|ylabel|zlabel|title"
19047
1288a2f27769 Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19044
diff changeset
4545 // hidden property for text rendering
22622
4191f8b5070c Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents: 22407
diff changeset
4546 double_property __fontsize_points__ hgr , 0
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4547 END_PROPERTIES
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4548
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4549 OCTINTERP_API Matrix get_data_position (void) const;
29433
8811d8274118 Allow arbitrary text rotation onscreen (bug #33118)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29359
diff changeset
4550 OCTINTERP_API Matrix get_extent_matrix (bool rotated = false) const;
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4551 const uint8NDArray& get_pixels (void) const { return m_pixels; }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents: 21200
diff changeset
4552
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents: 21200
diff changeset
4553 // Text renderer, used for calculation of text size
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4554 octave::text_renderer m_txt_renderer;
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4555
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4556 protected:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4557 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4558 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4559 m_position.add_constraint (dim_vector (1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4560 m_fontsize.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4561 m_linewidth.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4562 m_margin.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4563 m_cached_units = get_units ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4564 update_font ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4565 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4566
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4567 private:
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4568 void update_position (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4569 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4570 Matrix pos = get_data_position ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4571 Matrix lim;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4572
26712
f8e7c1750222 Fix auto axes limits with text on negative logarithmic axes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26682
diff changeset
4573 lim = Matrix (1, 4, pos(0));
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23449
diff changeset
4574 lim(2) = (lim(2) <= 0 ? octave::numeric_limits<double>::Inf () : lim(2));
26712
f8e7c1750222 Fix auto axes limits with text on negative logarithmic axes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26682
diff changeset
4575 lim(3) = (lim(3) >= 0 ? -octave::numeric_limits<double>::Inf () : lim(3));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4576 set_xlim (lim);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4577
26712
f8e7c1750222 Fix auto axes limits with text on negative logarithmic axes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26682
diff changeset
4578 lim = Matrix (1, 4, pos(1));
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23449
diff changeset
4579 lim(2) = (lim(2) <= 0 ? octave::numeric_limits<double>::Inf () : lim(2));
26712
f8e7c1750222 Fix auto axes limits with text on negative logarithmic axes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26682
diff changeset
4580 lim(3) = (lim(3) >= 0 ? -octave::numeric_limits<double>::Inf () : lim(3));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4581 set_ylim (lim);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4582
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4583 if (pos.numel () == 3)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4584 {
26712
f8e7c1750222 Fix auto axes limits with text on negative logarithmic axes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26682
diff changeset
4585 lim = Matrix (1, 4, pos(2));
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23449
diff changeset
4586 lim(2) = (lim(2) <= 0 ? octave::numeric_limits<double>::Inf ()
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23449
diff changeset
4587 : lim(2));
26712
f8e7c1750222 Fix auto axes limits with text on negative logarithmic axes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26682
diff changeset
4588 lim(3) = (lim(3) >= 0 ? -octave::numeric_limits<double>::Inf ()
f8e7c1750222 Fix auto axes limits with text on negative logarithmic axes.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26682
diff changeset
4589 : lim(3));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4590 set_zliminclude ("on");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4591 set_zlim (lim);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4592 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4593 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4594 set_zliminclude ("off");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4595 }
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4596
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4597 OCTINTERP_API void request_autopos (void);
12389
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4598 void update_positionmode (void) { request_autopos (); }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4599 void update_rotationmode (void) { request_autopos (); }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4600 void update_horizontalalignmentmode (void) { request_autopos (); }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4601 void update_verticalalignmentmode (void) { request_autopos (); }
5367bd36b9f8 implement autopositioning requests from text objects to axes
Konstantinos Poulios <logari81@googlemail.com>
parents: 12334
diff changeset
4602
12440
2ed62b9f949e synchronization of axes position and outerposition
Konstantinos Poulios <logari81@googlemail.com>
parents: 12433
diff changeset
4603 void update_string (void) { request_autopos (); update_text_extent (); }
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4604 void update_rotation (void) { update_text_extent (); }
12777
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
4605 void update_fontname (void) { update_font (); update_text_extent (); }
6c1d0f03c331 Avoid redundant calls to set_font of text renderers (Bug #31305)
Konstantinos Poulios <logari81@gmail.com>
parents: 12685
diff changeset
4606 void update_fontsize (void) { update_font (); update_text_extent (); }
26858
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26715
diff changeset
4607 void update_fontsmoothing (void) { update_font (); update_text_extent (); }
26682
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4608
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4609 void update_color (void)
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4610 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4611 if (! m_color.is ("none"))
26682
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4612 {
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4613 update_font ();
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4614 update_text_extent ();
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4615 }
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4616 }
0780d3f4ecad Implement "none" as a color for axes and text objects (bug #52842).
Rik <rik@octave.org>
parents: 26639
diff changeset
4617
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
4618 void update_fontangle (void)
23396
945b53af4655 maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 23258
diff changeset
4619 {
945b53af4655 maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 23258
diff changeset
4620 update_font ();
23210
3a298e07002c Deprecate "light" and "demi" values for "fontweight" property (bug #50353).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23201
diff changeset
4621 update_text_extent ();
3a298e07002c Deprecate "light" and "demi" values for "fontweight" property (bug #50353).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23201
diff changeset
4622 }
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
4623 void update_fontweight (void) { update_font (); update_text_extent (); }
23210
3a298e07002c Deprecate "light" and "demi" values for "fontweight" property (bug #50353).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23201
diff changeset
4624
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4625 void update_interpreter (void) { update_text_extent (); }
11455
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11394
diff changeset
4626 void update_horizontalalignment (void) { update_text_extent (); }
2be9e22796d2 improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents: 11394
diff changeset
4627 void update_verticalalignment (void) { update_text_extent (); }
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4628
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4629 OCTINTERP_API void update_units (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4630 OCTINTERP_API void update_fontunits (const caseless_str& old_fontunits);
10402
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4631
9f2bf537a651 Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents: 10317
diff changeset
4632 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4633 std::string m_cached_units;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4634 uint8NDArray m_pixels;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4635 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4636
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4637 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4638 properties m_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4639
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4640 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4641 text (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4642 : base_graphics_object (), m_properties (mh, p)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4643 {
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4644 m_properties.set_clipping ("off");
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4645 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4646
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
4647 ~text (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4648
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4649 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4650
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4651 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
4652
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4653 bool valid_object (void) const { return true; }
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4654
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4655 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4656 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4657 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4658 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4659 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4660 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4661 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4662 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4663
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4664 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4665
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
4666 class OCTINTERP_API image : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4667 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4668 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4669
7821
f79dcba526a8 Export nested properties classes of all graphics object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7527
diff changeset
4670 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4671 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4672 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4673
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4674 bool is_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4675 { return (m_aliminclude.is_on () && m_alphadatamapping.is ("scaled")); }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4676 std::string get_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4677 { return m_aliminclude.current_value (); }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4678
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4679 bool is_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4680 { return (m_climinclude.is_on () && m_cdatamapping.is ("scaled")); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4681 std::string get_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4682 { return m_climinclude.current_value (); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4683
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4684 OCTINTERP_API octave_value get_color_data (void) const;
9680
73153525df9a initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9620
diff changeset
4685
19324
68db8396c378 Make "image ()" use the default image cdata
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19087
diff changeset
4686 void initialize_data (void) { update_cdata (); }
68db8396c378 Make "image ()" use the default image cdata
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19087
diff changeset
4687
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4688 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4689 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4690 // Programming note: Keep property list sorted if new ones are added.
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4691
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
4692 BEGIN_PROPERTIES (image)
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
4693 array_property alphadata u , Matrix (1, 1, 1.0)
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
4694 radio_property alphadatamapping al , "{none}|direct|scaled"
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
4695 array_property cdata u , default_image_cdata ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4696 radio_property cdatamapping al , "scaled|{direct}"
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4697 row_vector_property xdata mu , Matrix ()
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4698 row_vector_property ydata mu , Matrix ()
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4699 // hidden properties for limit computation
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4700 row_vector_property alim hlr , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4701 row_vector_property clim hlr , Matrix ()
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
4702 row_vector_property xlim hlr , Matrix ()
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
4703 row_vector_property ylim hlr , Matrix ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4704 bool_property aliminclude hlg , "on"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4705 bool_property climinclude hlg , "on"
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4706 bool_property xliminclude hl , "on"
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4707 bool_property yliminclude hl , "on"
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4708 radio_property xdatamode ha , "{auto}|manual"
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4709 radio_property ydatamode ha , "{auto}|manual"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4710 END_PROPERTIES
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4711
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4712 protected:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4713 void init (void)
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4714 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4715 m_xdata.add_constraint (2);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4716 m_xdata.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4717 m_ydata.add_constraint (2);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4718 m_ydata.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4719 m_cdata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4720 m_cdata.add_constraint ("single");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4721 m_cdata.add_constraint ("logical");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4722 m_cdata.add_constraint ("int8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4723 m_cdata.add_constraint ("int16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4724 m_cdata.add_constraint ("int32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4725 m_cdata.add_constraint ("int64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4726 m_cdata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4727 m_cdata.add_constraint ("uint16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4728 m_cdata.add_constraint ("uint32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4729 m_cdata.add_constraint ("uint64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4730 m_cdata.add_constraint ("real");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4731 m_cdata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4732 m_cdata.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4733 m_alphadata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4734 m_alphadata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4735 m_alphadata.add_constraint (dim_vector (-1, -1));
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4736 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4737
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4738 private:
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4739 void update_alphadata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4740 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4741 if (alphadatamapping_is ("scaled"))
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4742 set_alim (m_alphadata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4743 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4744 m_alim = m_alphadata.get_limits ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4745 }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4746
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4747 void update_cdata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4748 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4749 if (cdatamapping_is ("scaled"))
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4750 set_clim (m_cdata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4751 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4752 m_clim = m_cdata.get_limits ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4753
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4754 if (m_xdatamode.is ("auto"))
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4755 update_xdata ();
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
4756
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4757 if (m_ydatamode.is ("auto"))
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4758 update_ydata ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
4759 }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4760
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4761 void update_xdata (void)
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4762 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4763 if (m_xdata.get ().isempty ())
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4764 set_xdatamode ("auto");
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
4765
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4766 if (m_xdatamode.is ("auto"))
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4767 {
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4768 set_xdata (get_auto_xdata ());
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4769 set_xdatamode ("auto");
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4770 }
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
4771
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4772 Matrix limits = m_xdata.get_limits ();
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4773 float dp = pixel_xsize ();
9687
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4774
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4775 limits(0) = limits(0) - dp;
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4776 limits(1) = limits(1) + dp;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4777 set_xlim (limits);
9687
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4778 }
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4779
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4780 void update_ydata (void)
9687
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4781 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4782 if (m_ydata.get ().isempty ())
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4783 set_ydatamode ("auto");
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
4784
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4785 if (m_ydatamode.is ("auto"))
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4786 {
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
4787 set_ydata (get_auto_ydata ());
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4788 set_ydatamode ("auto");
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4789 }
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
4790
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4791 Matrix limits = m_ydata.get_limits ();
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4792 float dp = pixel_ysize ();
9687
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4793
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4794 limits(0) = limits(0) - dp;
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4795 limits(1) = limits(1) + dp;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4796 set_ylim (limits);
9687
86aa08bbc887 image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents: 9680
diff changeset
4797 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4798
18899
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4799 Matrix get_auto_xdata (void)
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4800 {
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4801 dim_vector dv = get_cdata ().dims ();
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4802 Matrix data;
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4803 if (dv(1) > 0.)
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4804 {
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4805 data = Matrix (1, 2, 1);
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4806 data(1) = dv(1);
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4807 }
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4808 return data;
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4809 }
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4810
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4811 Matrix get_auto_ydata (void)
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4812 {
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4813 dim_vector dv = get_cdata ().dims ();
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4814 Matrix data;
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4815 if (dv(0) > 0.)
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4816 {
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4817 data = Matrix (1, 2, 1);
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4818 data(1) = dv(0);
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4819 }
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4820 return data;
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4821 }
3d9e503aea2c Update image "x/ydata" when "cdata" is changed (bug #42121)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18850
diff changeset
4822
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4823 float pixel_size (octave_idx_type dim, const Matrix limits)
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4824 {
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4825 octave_idx_type l = dim - 1;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4826 float dp;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4827
11089
d761f0dc997e graphics.h.in: Properly set image pixel size when unique(x/ydata) is scalar.
Ben Abbott <bpabbott@mac.com>
parents: 11076
diff changeset
4828 if (l > 0 && limits(0) != limits(1))
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4829 dp = (limits(1) - limits(0))/(2*l);
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4830 else
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4831 {
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4832 if (limits(1) == limits(2))
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4833 dp = 0.5;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4834 else
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4835 dp = (limits(1) - limits(0))/2;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4836 }
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4837 return dp;
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4838 }
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4839
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4840 public:
21562
6c2fd62db1f7 maint: Eliminate accidental double spaces in code.
Rik <rik@octave.org>
parents: 21367
diff changeset
4841 float pixel_xsize (void)
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4842 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4843 return pixel_size ((get_cdata ().dims ())(1), m_xdata.get_limits ());
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4844 }
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4845
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4846 float pixel_ysize (void)
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4847 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4848 return pixel_size ((get_cdata ().dims ())(0), m_ydata.get_limits ());
11076
b748b86cb8c1 fix images with width or height of 1
Shai Ayal <shaiay@users.sourceforge.net>
parents: 11075
diff changeset
4849 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4850 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4851
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4852 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4853 properties m_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4854
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4855 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4856 image (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4857 : base_graphics_object (), m_properties (mh, p)
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4858 {
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4859 m_properties.initialize_data ();
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4860 }
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4861
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
4862 ~image (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4863
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4864 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4865
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4866 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
4867
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4868 bool valid_object (void) const { return true; }
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4869
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4870 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4871 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4872 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4873 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4874 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4875 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
4876 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4877 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4878
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4879 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4880
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4881 class OCTINTERP_API light : public base_graphics_object
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4882 {
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4883 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4884
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4885 class OCTINTERP_API properties : public base_properties
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4886 {
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4887 // See the genprops.awk script for an explanation of the
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4888 // properties declarations.
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4889 // Programming note: Keep property list sorted if new ones are added.
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4890
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4891 BEGIN_PROPERTIES (light)
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4892 color_property color , color_values (1, 1, 1)
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4893 array_property position , default_light_position ()
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4894 radio_property style , "{infinite}|local"
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4895 END_PROPERTIES
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4896
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4897 protected:
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4898 void init (void)
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4899 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4900 m_position.add_constraint (dim_vector (1, 3));
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4901 }
26045
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
4902
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
4903 private:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4904 OCTINTERP_API void update_visible (void);
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4905 };
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4906
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4907 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4908 properties m_properties;
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4909
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4910 public:
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4911 light (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4912 : base_graphics_object (), m_properties (mh, p)
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4913 { }
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4914
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
4915 ~light (void) = default;
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4916
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4917 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4918
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4919 const base_properties& get_properties (void) const { return m_properties; }
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4920
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4921 bool valid_object (void) const { return true; }
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4922
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4923 bool has_readonly_property (const caseless_str& pname) const
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4924 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4925 bool retval = m_properties.has_readonly_property (pname);
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4926 if (! retval)
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4927 retval = base_properties::has_readonly_property (pname);
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4928 return retval;
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4929 }
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
4930
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
4931 protected:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4932 OCTINTERP_API void initialize (const graphics_object& go);
21789
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4933 };
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4934
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4935 // ---------------------------------------------------------------------
6afdf40be534 Implement graphics object "light" (patch #8943).
mmuetzel <markus.muetzel@gmx.de>
parents: 21782
diff changeset
4936
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
4937 class OCTINTERP_API patch : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4938 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4939 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4940
7821
f79dcba526a8 Export nested properties classes of all graphics object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7527
diff changeset
4941 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4942 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4943 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4944
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: 7832
diff changeset
4945 octave_value get_color_data (void) const;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
4946
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
4947 // Matlab allows incoherent data to be stored into patch properties.
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
4948 // The patch should then be ignored by the renderer.
23433
c9fab0bc983e maint: Use convention 'int& x' for naming references.
Rik <rik@octave.org>
parents: 23401
diff changeset
4949 bool has_bad_data (std::string& msg) const
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4950 {
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
4951 msg = m_bad_data_msg;
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4952 return ! msg.empty ();
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
4953 }
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
4954
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4955 bool is_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4956 { return (m_aliminclude.is_on () && m_alphadatamapping.is ("scaled")); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4957 std::string get_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4958 { return m_aliminclude.current_value (); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4959
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4960 bool is_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4961 { return (m_climinclude.is_on () && m_cdatamapping.is ("scaled")); }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4962 std::string get_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
4963 { return m_climinclude.current_value (); }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4964
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
4965 OCTINTERP_API bool get_do_lighting (void) const;
25423
13b1b9a0d9c5 Move management of lights in axes from GL to graphics backend.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25418
diff changeset
4966
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
4967 std::vector<std::vector<octave_idx_type>> m_coplanar_last_idx;
25418
762eb2e33a7f Enable support of non-coplanar faces in patches for OpenGL (bug #47677).
Markus Muetzel <markus.muetzel@gmx.de>
parents: 25273
diff changeset
4968
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4969 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4970 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4971 // Programming note: Keep property list sorted if new ones are added.
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
4972
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
4973 BEGIN_PROPERTIES (patch)
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4974 radio_property alphadatamapping l , "none|{scaled}|direct"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4975 double_property ambientstrength , 0.3
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4976 radio_property backfacelighting , "unlit|lit|{reverselit}"
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4977 array_property cdata u , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
4978 radio_property cdatamapping l , "{scaled}|direct"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4979 double_property diffusestrength , 0.6
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4980 string_property displayname , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4981 double_radio_property edgealpha , double_radio_property (1.0, radio_values ("flat|interp"))
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4982 color_property edgecolor , color_property (color_values (0, 0, 0), radio_values ("none|flat|interp"))
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
4983 radio_property edgelighting u , "{none}|flat|gouraud|phong"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4984 double_radio_property facealpha , double_radio_property (1.0, radio_values ("flat|interp"))
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4985 color_property facecolor , color_property (color_values (0, 0, 0), radio_values ("none|flat|interp"))
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
4986 radio_property facelighting u , "none|{flat}|gouraud|phong"
21654
a0ebc922fd52 Add "facenormals" and "*normalsmode" to "surface" and "patch" (bug #47791)
mmuetzel <markus.muetzel@gmx.de>
parents: 21568
diff changeset
4987 array_property facenormals m , Matrix ()
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
4988 radio_property facenormalsmode u , "{auto}|manual"
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
4989 array_property faces u , default_patch_faces ()
7848
6bb2bbc2bf45 Remove data_property, replace with array_property or row_vector_property.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7847
diff changeset
4990 array_property facevertexalphadata , Matrix ()
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
4991 array_property facevertexcdata u , Matrix ()
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4992 radio_property linestyle , "{-}|--|:|-.|none"
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4993 double_property linewidth , 0.5
30253
20fd3c03fd74 Add new plot marker styles '|' and '_' (bug #61350)
Rik <rik@octave.org>
parents: 30155
diff changeset
4994 radio_property marker , "{none}|+|o|*|.|x|||_|s|square|d|diamond|^|v|>|<|p|pentagram|h|hexagram"
17645
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
4995 color_property markeredgecolor , color_property (radio_values ("none|{auto}|flat"), color_values (0, 0, 0))
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
4996 color_property markerfacecolor , color_property (radio_values ("{none}|auto|flat"), color_values (0, 0, 0))
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
4997 double_property markersize , 6
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4998 double_property specularcolorreflectance , 1.0
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
4999 double_property specularexponent , 10.0
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
5000 double_property specularstrength , 0.9
21654
a0ebc922fd52 Add "facenormals" and "*normalsmode" to "surface" and "patch" (bug #47791)
mmuetzel <markus.muetzel@gmx.de>
parents: 21568
diff changeset
5001 array_property vertexnormals m , Matrix ()
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5002 radio_property vertexnormalsmode u , "{auto}|manual"
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5003 array_property vertices u , default_patch_vertices ()
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5004 array_property xdata u , default_patch_xdata ()
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5005 array_property ydata u , default_patch_ydata ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5006 array_property zdata u , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5007
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5008 // hidden properties for limit computation
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5009 row_vector_property alim hlr , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5010 row_vector_property clim hlr , Matrix ()
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5011 row_vector_property xlim hlr , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5012 row_vector_property ylim hlr , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5013 row_vector_property zlim hlr , Matrix ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5014 bool_property aliminclude hlg , "on"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5015 bool_property climinclude hlg , "on"
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5016 bool_property xliminclude hl , "on"
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5017 bool_property yliminclude hl , "on"
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5018 bool_property zliminclude hl , "on"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5019 END_PROPERTIES
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5020
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
5021 protected:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
5022 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5023 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5024 m_xdata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5025 m_ydata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5026 m_zdata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5027 m_faces.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5028 m_vertices.add_constraint (dim_vector (-1, 2));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5029 m_vertices.add_constraint (dim_vector (-1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5030 m_cdata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5031 m_cdata.add_constraint ("single");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5032 m_cdata.add_constraint ("logical");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5033 m_cdata.add_constraint ("int8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5034 m_cdata.add_constraint ("int16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5035 m_cdata.add_constraint ("int32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5036 m_cdata.add_constraint ("int64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5037 m_cdata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5038 m_cdata.add_constraint ("uint16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5039 m_cdata.add_constraint ("uint32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5040 m_cdata.add_constraint ("uint64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5041 m_cdata.add_constraint ("real");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5042 m_cdata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5043 m_cdata.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5044 m_facevertexcdata.add_constraint (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5045 m_facevertexcdata.add_constraint (dim_vector (-1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5046 m_facevertexcdata.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5047 m_facevertexalphadata.add_constraint (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5048 m_facevertexalphadata.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5049 m_facenormals.add_constraint (dim_vector (-1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5050 m_facenormals.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5051 m_vertexnormals.add_constraint (dim_vector (-1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5052 m_vertexnormals.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5053
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5054 m_ambientstrength.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5055 m_ambientstrength.add_constraint ("max", 1.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5056 m_diffusestrength.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5057 m_diffusestrength.add_constraint ("max", 1.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5058 m_linewidth.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5059 m_markersize.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5060 m_specularcolorreflectance.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5061 m_specularcolorreflectance.add_constraint ("max", 1.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5062 m_specularexponent.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5063 m_specularstrength.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5064 m_specularstrength.add_constraint ("max", 1.0, true);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5065 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5066
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5067 public:
26018
50583f514ae4 Add function to manually trigger calculation of [Vertex|Face]Normals (bug #54922).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25991
diff changeset
5068 void update_normals (bool reset, bool force = false)
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5069 {
26018
50583f514ae4 Add function to manually trigger calculation of [Vertex|Face]Normals (bug #54922).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25991
diff changeset
5070 update_face_normals (reset, force);
50583f514ae4 Add function to manually trigger calculation of [Vertex|Face]Normals (bug #54922).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25991
diff changeset
5071 update_vertex_normals (reset, force);
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5072 }
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5073
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5074
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5075 private:
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
5076 std::string m_bad_data_msg;
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5077
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5078 void update_faces (void) { update_data ();}
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5079
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5080 void update_vertices (void) { update_data ();}
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5081
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5082 void update_facevertexcdata (void) { update_data ();}
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5083
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5084 OCTINTERP_API void update_fvc (void);
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5085
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5086 void update_xdata (void)
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5087 {
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
5088 if (get_xdata ().isempty ())
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5089 {
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5090 // For compatibility with matlab behavior,
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5091 // if x/ydata are set empty, silently empty other *data and
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5092 // faces properties while vertices remain unchanged.
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5093 set_ydata (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5094 set_zdata (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5095 set_cdata (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5096 set_faces (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5097 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5098 else
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5099 {
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5100 update_fvc ();
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5101 update_normals (true);
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5102 }
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5103
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5104 set_xlim (m_xdata.get_limits ());
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5105 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5106
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5107 void update_ydata (void)
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5108 {
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
5109 if (get_ydata ().isempty ())
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5110 {
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5111 set_xdata (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5112 set_zdata (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5113 set_cdata (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5114 set_faces (Matrix ());
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5115 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5116 else
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5117 {
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5118 update_fvc ();
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5119 update_normals (true);
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5120 }
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5121
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5122 set_ylim (m_ydata.get_limits ());
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5123 }
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5124
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5125 void update_zdata (void)
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
5126 {
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5127 update_fvc ();
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5128 update_normals (true);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5129 set_zlim (m_zdata.get_limits ());
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5130 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
5131
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5132 void update_cdata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5133 {
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5134 update_fvc ();
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5135 update_normals (false);
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5136
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5137 if (cdatamapping_is ("scaled"))
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5138 set_clim (m_cdata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5139 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5140 m_clim = m_cdata.get_limits ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5141 }
18901
df972b9d080a Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18899
diff changeset
5142
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5143 OCTINTERP_API void update_data (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5144
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5145 OCTINTERP_API void calc_face_normals (Matrix& normals);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5146 OCTINTERP_API void update_face_normals (bool reset, bool force = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5147 OCTINTERP_API void update_vertex_normals (bool reset, bool force = false);
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5148
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5149 void update_edgelighting (void)
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5150 {
26045
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5151 update_normals (false);
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5152 }
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5153
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5154 void update_facelighting (void)
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5155 {
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5156 update_normals (false);
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5157 }
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5158
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5159 void update_facenormalsmode (void)
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5160 {
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5161 update_face_normals (false);
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5162 }
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5163
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5164 void update_vertexnormalsmode (void)
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5165 {
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5166 update_vertex_normals (false);
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5167 }
26045
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5168
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5169 void update_visible (void)
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5170 {
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5171 if (is_visible ())
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5172 update_normals (false);
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5173 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5174 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5175
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5176 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5177 properties m_properties;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5178 property_list m_default_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5179
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5180 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5181 patch (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5182 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
5183 { }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5184
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
5185 ~patch (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5186
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5187 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5188
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5189 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
5190
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5191 bool valid_object (void) const { return true; }
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5192
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5193 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5194 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5195 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5196 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5197 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5198 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5199 }
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5200
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5201 OCTINTERP_API void reset_default_properties (void);
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5202
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5203 protected:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5204 OCTINTERP_API void initialize (const graphics_object& go);
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5205
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5206 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5207
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5208 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5209
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5210 class OCTINTERP_API scatter : public base_graphics_object
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5211 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5212 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5213
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5214 class OCTINTERP_API properties : public base_properties
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5215 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5216 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5217
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5218 OCTINTERP_API octave_value get_color_data (void) const;
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5219
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5220 // Matlab allows incoherent data to be stored in scatter properties.
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5221 // The scatter object should then be ignored by the renderer.
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5222 bool has_bad_data (std::string& msg) const
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5223 {
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
5224 msg = m_bad_data_msg;
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5225 return ! msg.empty ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5226 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5227
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5228 bool is_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5229 { return m_aliminclude.is_on (); }
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5230 std::string get_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5231 { return m_aliminclude.current_value (); }
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5232
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5233 bool is_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5234 { return m_climinclude.is_on (); }
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5235 std::string get_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5236 { return m_climinclude.current_value (); }
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5237
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5238 // See the genprops.awk script for an explanation of the
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5239 // properties declarations.
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5240 // Programming note: Keep property list sorted if new ones are added.
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5241
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5242 BEGIN_PROPERTIES (scatter)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5243 array_property annotation , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5244 array_property cdata mu , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5245 radio_property cdatamode u , "{auto}|manual"
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5246 string_property cdatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5247 array_property datatiptemplate , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5248 string_property displayname , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5249 array_property latitudedata , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5250 string_property latitudedatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5251 double_property linewidth , 0.5
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5252 array_property longitudedata , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5253 string_property longitudedatasource , ""
30253
20fd3c03fd74 Add new plot marker styles '|' and '_' (bug #61350)
Rik <rik@octave.org>
parents: 30155
diff changeset
5254 radio_property marker , "{o}|+|*|.|x|||_|s|square|d|diamond|^|v|>|<|p|pentagram|h|hexagram|none"
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5255 double_property markeredgealpha , 1.0
28414
04349a21c750 Implement "none" for scatter "markeredgecolor" property (bug #58508)
Rik <rik@octave.org>
parents: 28348
diff changeset
5256 color_property markeredgecolor , color_property (radio_values ("{flat}|none"), color_values (0, 0, 0))
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5257 double_property markerfacealpha , 1.0
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5258 color_property markerfacecolor , color_property (radio_values ("{none}|auto|flat"), color_values (0, 0, 0))
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5259 array_property rdata , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5260 string_property rdatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5261 array_property seriesindex u , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5262 array_property sizedata u , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5263 string_property sizedatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5264 array_property thetadata , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5265 string_property thetadatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5266 array_property xdata u , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5267 string_property xdatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5268 array_property ydata u , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5269 string_property ydatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5270 array_property zdata u , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5271 string_property zdatasource , ""
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5272
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5273 // hidden properties for limit computation
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5274 row_vector_property alim hlr , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5275 row_vector_property clim hlr , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5276 row_vector_property xlim hlr , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5277 row_vector_property ylim hlr , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5278 row_vector_property zlim hlr , Matrix ()
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5279 bool_property aliminclude hlg , "on"
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5280 bool_property climinclude hlg , "on"
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5281 bool_property xliminclude hl , "on"
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5282 bool_property yliminclude hl , "on"
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5283 bool_property zliminclude hl , "on"
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5284 END_PROPERTIES
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5285
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5286 protected:
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5287 void init (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5288 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5289 m_xdata.add_constraint (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5290 m_xdata.add_constraint (dim_vector (1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5291 m_xdata.add_constraint (dim_vector (-1, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5292 m_xdata.add_constraint (dim_vector (0, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5293 m_ydata.add_constraint (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5294 m_ydata.add_constraint (dim_vector (1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5295 m_ydata.add_constraint (dim_vector (-1, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5296 m_ydata.add_constraint (dim_vector (0, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5297 m_zdata.add_constraint (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5298 m_zdata.add_constraint (dim_vector (1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5299 m_zdata.add_constraint (dim_vector (-1, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5300 m_zdata.add_constraint (dim_vector (0, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5301 m_sizedata.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5302 m_sizedata.add_constraint (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5303 m_sizedata.add_constraint (dim_vector (1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5304 m_sizedata.add_constraint (dim_vector (-1, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5305 m_sizedata.add_constraint (dim_vector (0, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5306 m_cdata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5307 m_cdata.add_constraint ("single");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5308 m_cdata.add_constraint ("logical");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5309 m_cdata.add_constraint ("int8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5310 m_cdata.add_constraint ("int16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5311 m_cdata.add_constraint ("int32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5312 m_cdata.add_constraint ("int64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5313 m_cdata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5314 m_cdata.add_constraint ("uint16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5315 m_cdata.add_constraint ("uint32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5316 m_cdata.add_constraint ("uint64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5317 m_cdata.add_constraint ("real");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5318 m_cdata.add_constraint (dim_vector (-1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5319 m_cdata.add_constraint (dim_vector (-1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5320 m_cdata.add_constraint (dim_vector (-1, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5321 m_cdata.add_constraint (dim_vector (0, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5322
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5323 m_linewidth.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5324 m_seriesindex.add_constraint (dim_vector (1, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5325 m_seriesindex.add_constraint (dim_vector (-1, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5326 m_seriesindex.add_constraint (dim_vector (0, -1));
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5327 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5328
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5329 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5330 OCTINTERP_API void update_color (void);
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5331
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5332 private:
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
5333 std::string m_bad_data_msg;
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5334
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5335 void update_xdata (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5336 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5337 if (get_xdata ().isempty ())
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5338 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5339 // For compatibility with Matlab behavior,
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5340 // if x/ydata are set empty, silently empty other *data properties.
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5341 set_ydata (Matrix ());
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5342 set_zdata (Matrix ());
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5343 bool cdatamode_auto = m_cdatamode.is ("auto");
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5344 set_cdata (Matrix ());
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5345 if (cdatamode_auto)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5346 set_cdatamode ("auto");
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5347 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5348
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5349 set_xlim (m_xdata.get_limits ());
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5350
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5351 update_data ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5352 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5353
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5354 void update_ydata (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5355 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5356 if (get_ydata ().isempty ())
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5357 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5358 set_xdata (Matrix ());
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5359 set_zdata (Matrix ());
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5360 bool cdatamode_auto = m_cdatamode.is ("auto");
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5361 set_cdata (Matrix ());
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5362 if (cdatamode_auto)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5363 set_cdatamode ("auto");
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5364 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5365
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5366 set_ylim (m_ydata.get_limits ());
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5367
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5368 update_data ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5369 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5370
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5371 void update_zdata (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5372 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5373 set_zlim (m_zdata.get_limits ());
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5374
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5375 update_data ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5376 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5377
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5378 void update_sizedata (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5379 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5380 update_data ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5381 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5382
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5383 void update_cdata (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5384 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5385 if (get_cdata ().matrix_value ().rows () == 1)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5386 set_clim (m_cdata.get_limits ());
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5387 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5388 m_clim = m_cdata.get_limits ();
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5389
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5390 update_data ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5391 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5392
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5393 void update_cdatamode (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5394 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5395 if (m_cdatamode.is ("auto"))
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5396 update_color ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5397 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5398
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5399 void update_seriesindex (void)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5400 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5401 if (m_cdatamode.is ("auto"))
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5402 update_color ();
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5403 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5404
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5405 void update_data (void);
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5406
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5407 };
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5408
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5409 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5410 properties m_properties;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5411 property_list m_default_properties;
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5412
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5413 public:
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5414 scatter (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5415 : base_graphics_object (), m_properties (mh, p)
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5416 {
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5417 // FIXME: seriesindex should increment by one each time a new scatter
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5418 // object is added to the axes.
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5419 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5420
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5421 ~scatter (void) = default;
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5422
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5423 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5424
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5425 const base_properties& get_properties (void) const { return m_properties; }
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5426
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5427 bool valid_object (void) const { return true; }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5428
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5429 bool has_readonly_property (const caseless_str& pname) const
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5430 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5431 bool retval = m_properties.has_readonly_property (pname);
28286
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5432 if (! retval)
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5433 retval = base_properties::has_readonly_property (pname);
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5434 return retval;
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5435 }
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5436
496735a910c1 Add graphics object "scatter" (bug #58282).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28282
diff changeset
5437 protected:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5438 OCTINTERP_API void initialize (const graphics_object& go);
25425
107920dd7715 Automatically calculate normals for patch objects (patch #8951).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25423
diff changeset
5439
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5440 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5441
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5442 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5443
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
5444 class OCTINTERP_API surface : public base_graphics_object
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5445 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5446 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5447
7821
f79dcba526a8 Export nested properties classes of all graphics object.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7527
diff changeset
5448 class OCTINTERP_API properties : public base_properties
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5449 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5450 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5451
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5452 octave_value 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
5453
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5454 bool is_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5455 { return (m_aliminclude.is_on () && m_alphadatamapping.is ("scaled")); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5456 std::string get_aliminclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5457 { return m_aliminclude.current_value (); }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5458
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5459 bool is_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5460 { return (m_climinclude.is_on () && m_cdatamapping.is ("scaled")); }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5461 std::string get_climinclude (void) const
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5462 { return m_climinclude.current_value (); }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5463
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5464 OCTINTERP_API bool get_do_lighting (void) const;
25423
13b1b9a0d9c5 Move management of lights in axes from GL to graphics backend.
Markus Mützel <markus.muetzel@gmx.de>
parents: 25418
diff changeset
5465
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5466 // See the genprops.awk script for an explanation of the
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5467 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5468 // Programming note: Keep property list sorted if new ones are added.
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5469
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
5470 BEGIN_PROPERTIES (surface)
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
5471 array_property alphadata u , Matrix (1, 1, 1.0)
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5472 radio_property alphadatamapping l , "none|direct|{scaled}"
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5473 double_property ambientstrength , 0.3
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5474 radio_property backfacelighting , "unlit|lit|{reverselit}"
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
5475 array_property cdata u , default_surface_cdata ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5476 radio_property cdatamapping al , "{scaled}|direct"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5477 string_property cdatasource , ""
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5478 double_property diffusestrength , 0.6
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5479 string_property displayname , ""
7846
d7737a4268b7 Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7844
diff changeset
5480 double_radio_property edgealpha , double_radio_property (1.0, radio_values ("flat|interp"))
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5481 color_property edgecolor , color_property (color_values (0, 0, 0), radio_values ("none|flat|interp"))
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5482 radio_property edgelighting u , "{none}|flat|gouraud|phong"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5483 double_radio_property facealpha , double_radio_property (1.0, radio_values ("flat|interp|texturemap"))
17645
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
5484 color_property facecolor , color_property (radio_values ("none|{flat}|interp|texturemap"), color_values (0, 0, 0))
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5485 radio_property facelighting u , "none|{flat}|gouraud|phong"
21654
a0ebc922fd52 Add "facenormals" and "*normalsmode" to "surface" and "patch" (bug #47791)
mmuetzel <markus.muetzel@gmx.de>
parents: 21568
diff changeset
5486 array_property facenormals m , Matrix ()
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5487 radio_property facenormalsmode u , "{auto}|manual"
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5488 radio_property linestyle , "{-}|--|:|-.|none"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5489 double_property linewidth , 0.5
30253
20fd3c03fd74 Add new plot marker styles '|' and '_' (bug #61350)
Rik <rik@octave.org>
parents: 30155
diff changeset
5490 radio_property marker , "{none}|+|o|*|.|x|||_|s|square|d|diamond|^|v|>|<|p|pentagram|h|hexagram"
17645
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
5491 color_property markeredgecolor , color_property (radio_values ("none|{auto}|flat"), color_values (0, 0, 0))
85a057ad1ba6 Fix graphic color properties which have a radio value as default.
Rik <rik@octave.org>
parents: 17631
diff changeset
5492 color_property markerfacecolor , color_property (radio_values ("{none}|auto|flat"), color_values (0, 0, 0))
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5493 double_property markersize , 6
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5494 radio_property meshstyle , "{both}|row|column"
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5495 double_property specularcolorreflectance , 1
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5496 double_property specularexponent , 10
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5497 double_property specularstrength , 0.9
21654
a0ebc922fd52 Add "facenormals" and "*normalsmode" to "surface" and "patch" (bug #47791)
mmuetzel <markus.muetzel@gmx.de>
parents: 21568
diff changeset
5498 array_property vertexnormals m , Matrix ()
a0ebc922fd52 Add "facenormals" and "*normalsmode" to "surface" and "patch" (bug #47791)
mmuetzel <markus.muetzel@gmx.de>
parents: 21568
diff changeset
5499 radio_property vertexnormalsmode u , "{auto}|manual"
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
5500 array_property xdata u , default_surface_xdata ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5501 string_property xdatasource , ""
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
5502 array_property ydata u , default_surface_ydata ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5503 string_property ydatasource , ""
18646
2deed6538c72 Make some graphics factory defaults conform to Matlab values (bug #41770).
pantxo <pantxo.diribarne@gmail.com>
parents: 18645
diff changeset
5504 array_property zdata u , default_surface_zdata ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5505 string_property zdatasource , ""
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5506
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5507 // hidden properties for limit computation
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5508 row_vector_property alim hlr , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5509 row_vector_property clim hlr , Matrix ()
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5510 row_vector_property xlim hlr , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5511 row_vector_property ylim hlr , Matrix ()
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5512 row_vector_property zlim hlr , Matrix ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5513 bool_property aliminclude hlg , "on"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5514 bool_property climinclude hlg , "on"
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5515 bool_property xliminclude hl , "on"
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5516 bool_property yliminclude hl , "on"
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5517 bool_property zliminclude hl , "on"
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5518 END_PROPERTIES
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5519
7363
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
5520 protected:
c31e5dab4f85 [project @ 2008-01-12 08:21:57 by jwe]
jwe
parents: 7307
diff changeset
5521 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5522 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5523 m_xdata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5524 m_ydata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5525 m_zdata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5526 m_cdata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5527 m_cdata.add_constraint ("single");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5528 m_cdata.add_constraint ("logical");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5529 m_cdata.add_constraint ("int8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5530 m_cdata.add_constraint ("int16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5531 m_cdata.add_constraint ("int32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5532 m_cdata.add_constraint ("int64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5533 m_cdata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5534 m_cdata.add_constraint ("uint16");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5535 m_cdata.add_constraint ("uint32");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5536 m_cdata.add_constraint ("uint64");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5537 m_cdata.add_constraint ("real");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5538 m_cdata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5539 m_cdata.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5540 m_alphadata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5541 m_alphadata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5542 m_alphadata.add_constraint (dim_vector (-1, -1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5543 m_facenormals.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5544 m_facenormals.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5545 m_vertexnormals.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5546 m_vertexnormals.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5547
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5548 m_ambientstrength.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5549 m_ambientstrength.add_constraint ("max", 1.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5550 m_diffusestrength.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5551 m_diffusestrength.add_constraint ("max", 1.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5552 m_linewidth.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5553 m_markersize.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5554 m_specularcolorreflectance.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5555 m_specularcolorreflectance.add_constraint ("max", 1.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5556 m_specularexponent.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5557 m_specularstrength.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5558 m_specularstrength.add_constraint ("max", 1.0, true);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5559 }
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5560
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5561 public:
26018
50583f514ae4 Add function to manually trigger calculation of [Vertex|Face]Normals (bug #54922).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25991
diff changeset
5562 void update_normals (bool reset, bool force = false)
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5563 {
26018
50583f514ae4 Add function to manually trigger calculation of [Vertex|Face]Normals (bug #54922).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25991
diff changeset
5564 update_face_normals (reset, force);
50583f514ae4 Add function to manually trigger calculation of [Vertex|Face]Normals (bug #54922).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25991
diff changeset
5565 update_vertex_normals (reset, force);
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5566 }
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5567
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5568
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5569 private:
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5570 void update_alphadata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5571 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5572 if (alphadatamapping_is ("scaled"))
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5573 set_alim (m_alphadata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5574 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5575 m_alim = m_alphadata.get_limits ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5576 }
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5577
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5578 void update_cdata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5579 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5580 if (cdatamapping_is ("scaled"))
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5581 set_clim (m_cdata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5582 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5583 m_clim = m_cdata.get_limits ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5584 }
7829
8ca8e97e8c0a Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7828
diff changeset
5585
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5586 void update_xdata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5587 {
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5588 update_normals (true);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5589 set_xlim (m_xdata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5590 }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
5591
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5592 void update_ydata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5593 {
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5594 update_normals (true);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5595 set_ylim (m_ydata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5596 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5597
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5598 void update_zdata (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5599 {
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5600 update_normals (true);
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5601 set_zlim (m_zdata.get_limits ());
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5602 }
7862
8f3459a90bf3 Redesign axis limit computation handling (using hidden limit properties in child objects)
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7860
diff changeset
5603
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5604 OCTINTERP_API void update_face_normals (bool reset, bool force = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5605 OCTINTERP_API void update_vertex_normals (bool reset, bool force = false);
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5606
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5607 void update_facenormalsmode (void)
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5608 { update_face_normals (false); }
21654
a0ebc922fd52 Add "facenormals" and "*normalsmode" to "surface" and "patch" (bug #47791)
mmuetzel <markus.muetzel@gmx.de>
parents: 21568
diff changeset
5609
a0ebc922fd52 Add "facenormals" and "*normalsmode" to "surface" and "patch" (bug #47791)
mmuetzel <markus.muetzel@gmx.de>
parents: 21568
diff changeset
5610 void update_vertexnormalsmode (void)
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5611 { update_vertex_normals (false); }
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5612
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5613 void update_edgelighting (void)
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5614 { update_normals (false); }
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5615
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5616 void update_facelighting (void)
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5617 { update_normals (false); }
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5618
26045
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5619 void update_visible (void)
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5620 {
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5621 if (is_visible ())
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5622 update_normals (false);
10145b9ad883 Update normals when turning visibility of surface and patch on (bug #54970).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26037
diff changeset
5623 }
25867
49ffa78f9243 Use "facenormals" for flat lighting on surfaces (bug #54024).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25449
diff changeset
5624
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5625 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5626
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5627 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5628 properties m_properties;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5629
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5630 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5631 surface (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5632 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
5633 { }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5634
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
5635 ~surface (void) = default;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5636
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5637 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5638
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5639 const base_properties& get_properties (void) const { return m_properties; }
7222
dd8b3bbeeaf9 [project @ 2007-11-30 06:23:25 by jwe]
jwe
parents: 7214
diff changeset
5640
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5641 bool valid_object (void) const { return true; }
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5642
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5643 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5644 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5645 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5646 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5647 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5648 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5649 }
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5650 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
5651
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5652 // ---------------------------------------------------------------------
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5653
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5654 class OCTINTERP_API hggroup : public base_graphics_object
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5655 {
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5656 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5657
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5658 class OCTINTERP_API properties : public base_properties
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5659 {
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5660 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5661
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5662 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5663 remove_child (const graphics_handle& h, bool from_root = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5664
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5665 OCTINTERP_API void adopt (const graphics_handle& h);
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5666
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5667 // See the genprops.awk script for an explanation of the
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5668 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5669 // Programming note: Keep property list sorted if new ones are added.
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5670
8247
e41f420875db set name of root_figure object to root
John W. Eaton <jwe@octave.org>
parents: 8222
diff changeset
5671 BEGIN_PROPERTIES (hggroup)
15519
f915996325b7 Add missing DisplayName and EraseMode properties to hggroups (bug #37442)
Ben Abbott <bpabbott@mac.com>
parents: 15468
diff changeset
5672 string_property displayname , ""
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5673
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5674 // hidden properties for limit computation
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5675 row_vector_property alim hr , Matrix ()
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5676 row_vector_property clim hr , Matrix ()
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
5677 row_vector_property xlim hr , Matrix ()
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
5678 row_vector_property ylim hr , Matrix ()
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
5679 row_vector_property zlim hr , Matrix ()
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5680 bool_property aliminclude h , "on"
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5681 bool_property climinclude h , "on"
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5682 bool_property xliminclude h , "on"
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5683 bool_property yliminclude h , "on"
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5684 bool_property zliminclude h , "on"
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5685 END_PROPERTIES
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5686
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5687 private:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5688 OCTINTERP_API void update_limits (void) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5689
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5690 OCTINTERP_API void update_limits (const graphics_handle& h) const;
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5691
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5692 protected:
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5693 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5694 { }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
5695
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5696 };
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5697
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5698 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5699 properties m_properties;
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5700
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5701 public:
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5702 hggroup (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5703 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
5704 { }
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5705
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
5706 ~hggroup (void) = default;
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5707
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5708 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5709
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5710 const base_properties& get_properties (void) const { return m_properties; }
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5711
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5712 bool valid_object (void) const { return true; }
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
5713
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5714 OCTINTERP_API void update_axis_limits (const std::string& axis_type);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5715
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5716 OCTINTERP_API void update_axis_limits (const std::string& axis_type,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5717 const graphics_handle& h);
11175
c0a95a5c6d25 Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents: 11167
diff changeset
5718
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5719 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5720 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5721 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5722 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5723 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5724 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5725 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5726
7865
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5727 };
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5728
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5729 // ---------------------------------------------------------------------
b74039822fd2 Add support for hggroup
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7864
diff changeset
5730
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5731 class OCTINTERP_API uimenu : public base_graphics_object
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5732 {
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5733 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5734
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5735 class OCTINTERP_API properties : public base_properties
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5736 {
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5737 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5738
26930
ead8f91c5556 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26918
diff changeset
5739 void remove_child (const graphics_handle& h, bool from_root = false)
26982
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
5740 {
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
5741 base_properties::remove_child (h, from_root);
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
5742 }
8d7265e353a0 Improve performance when closing figures (bug #55908).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26878
diff changeset
5743
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5744 void adopt (const graphics_handle& h)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5745 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5746 base_properties::adopt (h);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5747 }
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5748
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5749 // See the genprops.awk script for an explanation of the
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5750 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5751 // Programming note: Keep property list sorted if new ones are added.
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5752
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5753 BEGIN_PROPERTIES (uimenu)
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5754 string_property accelerator , ""
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
5755 callback_property callback , Matrix ()
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5756 bool_property checked , "off"
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5757 bool_property enable , "on"
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5758 color_property foregroundcolor , color_values (0, 0, 0)
29913
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5759 string_property label gs , ""
20045
ae12edf69bce Set default uimenu position property to 0 (Bug #44770)
John Donoghue
parents: 19987
diff changeset
5760 double_property position , 0
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5761 bool_property separator , "off"
29913
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5762 string_property text , ""
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5763
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5764 // Octave-specific properties
22622
4191f8b5070c Add '__' to start/end of hidden Octave-only graphics properties (bug #49205).
Rik <rik@octave.org>
parents: 22407
diff changeset
5765 string_property __fltk_label__ h , ""
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5766 any_property __object__ h , Matrix ()
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5767 END_PROPERTIES
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5768
29913
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5769 // Redirect calls from "Label" to "Text".
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5770 std::string get_label (void) const
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5771 {
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5772 return get_text ();
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5773 }
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5774
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5775 void set_label (const octave_value& val)
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5776 {
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5777 set_text (val);
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5778 }
3eca54836f97 Allow 'Label' to be used as a synonym for 'Text' on uimenus (bug #60870)
Rik <rik@octave.org>
parents: 29889
diff changeset
5779
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5780 protected:
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5781 void init (void)
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
5782 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5783 m_position.add_constraint ("min", 0, false);
22831
96228c17a66a Add input checking for double_property and handle_property (task #11311)
Markus Mützel <markus.muetzel@gmx.de>
parents: 22759
diff changeset
5784 }
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5785 };
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5786
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5787 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5788 properties m_properties;
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5789
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5790 public:
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5791 uimenu (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5792 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
5793 { }
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5794
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
5795 ~uimenu (void) = default;
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5796
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5797 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5798
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5799 const base_properties& get_properties (void) const { return m_properties; }
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5800
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5801 bool valid_object (void) const { return true; }
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11577
diff changeset
5802
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5803 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5804 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5805 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5806 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5807 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5808 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5809 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5810
11155
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5811 };
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5812
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5813 // ---------------------------------------------------------------------
f0e9befd6a1c add uimenu graphic object to fltk backend
Kai Habel <kai.habel@gmx.de>
parents: 11089
diff changeset
5814
28298
e55ff14249c3 Mirror new base property "contextmenu" in "uicontextmenu" (bug #58336).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28286
diff changeset
5815 // FIXME: This class has been renamed to "contextmenu" in Matlab R2020a.
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5816 class OCTINTERP_API uicontextmenu : public base_graphics_object
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5817 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5818 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5819
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5820 class OCTINTERP_API properties : public base_properties
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5821 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5822 public:
20181
aa36fb998a4d maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents: 20171
diff changeset
5823
aa36fb998a4d maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents: 20171
diff changeset
5824 void add_dependent_obj (graphics_handle gh)
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
5825 { m_dependent_obj_list.push_back (gh); }
20077
69f92e0affd2 Handle uicontextmenu deletion/reset (bug #44801)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20051
diff changeset
5826
20181
aa36fb998a4d maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents: 20171
diff changeset
5827 // FIXME: the list may contain duplicates.
aa36fb998a4d maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents: 20171
diff changeset
5828 // Should we return only unique elements?
aa36fb998a4d maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents: 20171
diff changeset
5829 const std::list<graphics_handle> get_dependent_obj_list (void)
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
5830 { return m_dependent_obj_list; }
20077
69f92e0affd2 Handle uicontextmenu deletion/reset (bug #44801)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20051
diff changeset
5831
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5832 // See the genprops.awk script for an explanation of the
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5833 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5834 // Programming note: Keep property list sorted if new ones are added.
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5835
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5836 BEGIN_PROPERTIES (uicontextmenu)
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
5837 callback_property callback , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5838 array_property position , Matrix (1, 2, 0.0)
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5839
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5840 // Octave-specific properties
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5841 any_property __object__ h , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5842 END_PROPERTIES
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5843
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5844 protected:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5845 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5846 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5847 m_position.add_constraint (dim_vector (1, 2));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5848 m_position.add_constraint (dim_vector (2, 1));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5849 m_visible.set (octave_value (false));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5850 }
20077
69f92e0affd2 Handle uicontextmenu deletion/reset (bug #44801)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20051
diff changeset
5851
69f92e0affd2 Handle uicontextmenu deletion/reset (bug #44801)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20051
diff changeset
5852 private:
69f92e0affd2 Handle uicontextmenu deletion/reset (bug #44801)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20051
diff changeset
5853 // List of objects that might depend on this uicontextmenu object
30040
805357e6b058 maint: use "m_" prefix for member variables of graphics objects.
Rik <rik@octave.org>
parents: 29993
diff changeset
5854 std::list<graphics_handle> m_dependent_obj_list;
29014
df307ee1fb30 Don't rely on graphics_objects destructor being executed synchronously (bug #53513).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 28346
diff changeset
5855
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5856 OCTINTERP_API void update_beingdeleted (void);
29014
df307ee1fb30 Don't rely on graphics_objects destructor being executed synchronously (bug #53513).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 28346
diff changeset
5857
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5858 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5859
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5860 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5861 properties m_properties;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5862
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5863 public:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5864 uicontextmenu (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5865 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
5866 { }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5867
29014
df307ee1fb30 Don't rely on graphics_objects destructor being executed synchronously (bug #53513).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 28346
diff changeset
5868 ~uicontextmenu (void) = default;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5869
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5870 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5871
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5872 const base_properties& get_properties (void) const { return m_properties; }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5873
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5874 bool valid_object (void) const { return true; }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5875
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5876 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5877 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5878 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5879 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5880 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5881 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5882 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5883
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5884 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5885
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5886 // ---------------------------------------------------------------------
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
5887
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5888 class OCTINTERP_API uicontrol : public base_graphics_object
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5889 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5890 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5891
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5892 class OCTINTERP_API properties : public base_properties
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5893 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5894 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5895
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5896 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5897 get_boundingbox (bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5898 const Matrix& parent_pix_size = Matrix ()) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5899
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5900 OCTINTERP_API double
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5901 get___fontsize_points__ (double box_pix_height = 0) const;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5902
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5903 // See the genprops.awk script for an explanation of the
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5904 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5905 // Programming note: Keep property list sorted if new ones are added.
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5906
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5907 BEGIN_PROPERTIES (uicontrol)
25429
ecc488aa56a0 Change default ui* objects color for compatibility (bug #53805)
Guillaume Flandin <guillaume.offline@gmail.com>
parents: 25425
diff changeset
5908 color_property backgroundcolor , color_values (0.94, 0.94, 0.94)
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5909 callback_property callback , Matrix ()
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5910 array_property cdata , Matrix ()
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5911 bool_property clipping , "on"
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5912 radio_property enable , "{on}|inactive|off"
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5913 array_property extent rG , Matrix (1, 4, 0.0)
28079
999351c323ce remove deprecated "oblique" value from fontangle graphics property
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
5914 radio_property fontangle u , "{normal}|italic"
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5915 string_property fontname u , OCTAVE_DEFAULT_FONTNAME
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5916 double_property fontsize u , 10
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5917 radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
5918 radio_property fontweight u , "{normal}|bold"
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5919 color_property foregroundcolor , color_values (0, 0, 0)
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
5920 radio_property horizontalalignment , "left|{center}|right"
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5921 callback_property keypressfcn , Matrix ()
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5922 double_property listboxtop , 1
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5923 double_property max , 1
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5924 double_property min , 0
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5925 array_property position , default_control_position ()
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5926 array_property sliderstep , default_control_sliderstep ()
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5927 string_array_property string u , ""
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5928 radio_property style S , "{pushbutton}|togglebutton|radiobutton|checkbox|edit|text|slider|frame|listbox|popupmenu"
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5929 string_property tooltipstring , ""
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5930 radio_property units u , "normalized|inches|centimeters|points|{pixels}|characters"
22619
7adc5bbd840a graphics: set uicontrol value default to 0 and handle special cases (Bug #48255)
John D
parents: 22407
diff changeset
5931 row_vector_property value , Matrix (1, 1, 0.0)
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5932 radio_property verticalalignment , "top|{middle}|bottom"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5933
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5934 // Octave-specific properties
26037
864448a7f347 Don't set keyboard focus on newly created uicontrol objects (bug #54942)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26024
diff changeset
5935 bool_property __focus__ h , "off"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
5936 any_property __object__ h , Matrix ()
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5937 END_PROPERTIES
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5938
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5939 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5940 std::string m_cached_units;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5941
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5942 protected:
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5943 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5944 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5945 m_cdata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5946 m_cdata.add_constraint ("single");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5947 m_cdata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5948 m_cdata.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5949 m_cdata.add_constraint (dim_vector (0, 0));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5950 m_position.add_constraint (dim_vector (1, 4));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5951 m_sliderstep.add_constraint (dim_vector (1, 2));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5952 m_fontsize.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5953 m_cached_units = get_units ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5954 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
5955
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5956 OCTINTERP_API void update_text_extent (void);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5957
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5958 void update_string (void) { update_text_extent (); }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5959 void update_fontname (void) { update_text_extent (); }
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5960 void update_fontsize (void) { update_text_extent (); }
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
5961 void update_fontangle (void)
23396
945b53af4655 maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 23258
diff changeset
5962 {
945b53af4655 maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 23258
diff changeset
5963 update_text_extent ();
23210
3a298e07002c Deprecate "light" and "demi" values for "fontweight" property (bug #50353).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23201
diff changeset
5964 }
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
5965 void update_fontweight (void) { update_text_extent (); }
23210
3a298e07002c Deprecate "light" and "demi" values for "fontweight" property (bug #50353).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23201
diff changeset
5966
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5967 OCTINTERP_API void update_fontunits (const caseless_str& old_units);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5968
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
5969 OCTINTERP_API void update_units (void);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5970
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5971 };
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5972
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5973 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5974 properties m_properties;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5975
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5976 public:
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5977 uicontrol (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5978 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
5979 { }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5980
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
5981 ~uicontrol (void) = default;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5982
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5983 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5984
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5985 const base_properties& get_properties (void) const { return m_properties; }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5986
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5987 bool valid_object (void) const { return true; }
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5988
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5989 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5990 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
5991 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5992 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5993 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5994 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
5995 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5996 };
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5997
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5998 // ---------------------------------------------------------------------
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
5999
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6000 class OCTINTERP_API uibuttongroup : public base_graphics_object
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6001 {
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6002 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6003
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6004 class OCTINTERP_API properties : public base_properties
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6005 {
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6006 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6007
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6008 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6009 remove_child (const graphics_handle& h, bool from_root = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6010
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6011 OCTINTERP_API void adopt (const graphics_handle& h);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6012
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6013 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6014 get_boundingbox (bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6015 const Matrix& parent_pix_size = Matrix ()) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6016
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6017 OCTINTERP_API double
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6018 get___fontsize_points__ (double box_pix_height = 0) const;
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6019
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6020 // See the genprops.awk script for an explanation of the
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6021 // properties declarations.
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6022 // Programming note: Keep property list sorted if new ones are added.
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6023
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6024 BEGIN_PROPERTIES (uibuttongroup)
25429
ecc488aa56a0 Change default ui* objects color for compatibility (bug #53805)
Guillaume Flandin <guillaume.offline@gmail.com>
parents: 25425
diff changeset
6025 color_property backgroundcolor , color_values (0.94, 0.94, 0.94)
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6026 radio_property bordertype , "none|{etchedin}|etchedout|beveledin|beveledout|line"
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6027 double_property borderwidth , 1
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6028 bool_property clipping , "on"
28079
999351c323ce remove deprecated "oblique" value from fontangle graphics property
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
6029 radio_property fontangle , "{normal}|italic"
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6030 string_property fontname , OCTAVE_DEFAULT_FONTNAME
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6031 double_property fontsize , 10
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6032 radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
6033 radio_property fontweight , "{normal}|bold"
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6034 color_property foregroundcolor , color_values (0, 0, 0)
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6035 color_property highlightcolor , color_values (1, 1, 1)
26194
4f1b3651fa5f Implement "SizeChangedFcn" for uipanel and uibuttongroup (bug #55085).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26185
diff changeset
6036 array_property position S , default_panel_position ()
26129
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
6037 // FIXME: "resizefcn" is no longer recommended by Matlab,
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
6038 // and has been replaced with "sizechangedfcn"
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
6039 // Eventually this will need to be hidden, and then removed.
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6040 callback_property resizefcn , Matrix ()
24120
0d446e938f1f maint: clean up code formatting in generated graphics.h
Mike Miller <mtmiller@octave.org>
parents: 24071
diff changeset
6041 handle_property selectedobject S , graphics_handle ()
0d446e938f1f maint: clean up code formatting in generated graphics.h
Mike Miller <mtmiller@octave.org>
parents: 24071
diff changeset
6042 callback_property selectionchangedfcn , Matrix ()
25449
d2d9701d2dcb Change default ShadowColor property to match Matlab (bug #53805).
Rik <rik@octave.org>
parents: 25436
diff changeset
6043 color_property shadowcolor , color_values (0.7, 0.7, 0.7)
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6044 callback_property sizechangedfcn , Matrix ()
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6045 radio_property units S , "{normalized}|inches|centimeters|points|pixels|characters"
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6046 string_property title , ""
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6047 radio_property titleposition , "{lefttop}|centertop|righttop|leftbottom|centerbottom|rightbottom"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6048
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6049 // Octave-specific properties
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6050 any_property __object__ h , Matrix ()
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6051 END_PROPERTIES
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6052
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6053 protected:
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6054 void init (void)
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6055 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6056 m_position.add_constraint (dim_vector (1, 4));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6057 m_borderwidth.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6058 m_fontsize.add_constraint ("min", 0.0, false);
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6059 }
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6060
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6061 // void update_text_extent (void);
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6062 // void update_string (void) { update_text_extent (); }
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6063 // void update_fontname (void) { update_text_extent (); }
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6064 // void update_fontsize (void) { update_text_extent (); }
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6065 // void update_fontangle (void) { update_text_extent (); }
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
6066 // void update_fontweight (void) { update_fontweight (); }
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6067
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6068 OCTINTERP_API void update_units (const caseless_str& old_units);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6069 OCTINTERP_API void update_fontunits (const caseless_str& old_units);
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6070
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6071 };
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6072
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6073 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6074 properties m_properties;
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6075
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6076 public:
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6077 uibuttongroup (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6078 : base_graphics_object (), m_properties (mh, p)
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6079 { }
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6080
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
6081 ~uibuttongroup (void) = default;
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6082
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6083 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6084
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6085 const base_properties& get_properties (void) const { return m_properties; }
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6086
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6087 bool valid_object (void) const { return true; }
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6088
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6089 bool has_readonly_property (const caseless_str& pname) const
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6090 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6091 bool retval = m_properties.has_readonly_property (pname);
21824
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6092 if (! retval)
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6093 retval = base_properties::has_readonly_property (pname);
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6094 return retval;
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6095 }
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6096
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6097 };
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6098
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6099 // ---------------------------------------------------------------------
6780a8657be3 Implement uibuttongroup (bug #47513)
Andrew Thornton <art27@cantab.net>
parents: 21789
diff changeset
6100
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6101 class OCTINTERP_API uipanel : public base_graphics_object
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6102 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6103 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6104
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6105 class OCTINTERP_API properties : public base_properties
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6106 {
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6107 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6108
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6109 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6110 get_boundingbox (bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6111 const Matrix& parent_pix_size = Matrix ()) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6112
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6113 OCTINTERP_API double
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6114 get___fontsize_points__ (double box_pix_height = 0) const;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6115
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6116 // See the genprops.awk script for an explanation of the
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6117 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
6118 // Programming note: Keep property list sorted if new ones are added.
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6119
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6120 BEGIN_PROPERTIES (uipanel)
25429
ecc488aa56a0 Change default ui* objects color for compatibility (bug #53805)
Guillaume Flandin <guillaume.offline@gmail.com>
parents: 25425
diff changeset
6121 color_property backgroundcolor , color_values (0.94, 0.94, 0.94)
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6122 radio_property bordertype , "none|{etchedin}|etchedout|beveledin|beveledout|line"
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6123 double_property borderwidth , 1
28079
999351c323ce remove deprecated "oblique" value from fontangle graphics property
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
6124 radio_property fontangle , "{normal}|italic"
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6125 string_property fontname , OCTAVE_DEFAULT_FONTNAME
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6126 double_property fontsize , 10
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6127 radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
6128 radio_property fontweight , "{normal}|bold"
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6129 color_property foregroundcolor , color_values (0, 0, 0)
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6130 color_property highlightcolor , color_values (1, 1, 1)
26194
4f1b3651fa5f Implement "SizeChangedFcn" for uipanel and uibuttongroup (bug #55085).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26185
diff changeset
6131 array_property position S , default_panel_position ()
26129
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
6132 // FIXME: "resizefcn" is no longer recommended by Matlab,
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
6133 // and has been replaced with "sizechangedfcn"
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
6134 // Eventually this will need to be hidden, and then removed.
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6135 callback_property resizefcn , Matrix ()
25449
d2d9701d2dcb Change default ShadowColor property to match Matlab (bug #53805).
Rik <rik@octave.org>
parents: 25436
diff changeset
6136 color_property shadowcolor , color_values (0.7, 0.7, 0.7)
26129
3c61c8137664 Add sizechangedfcn property to uipanel objects.
Rik <rik@octave.org>
parents: 26125
diff changeset
6137 callback_property sizechangedfcn , Matrix ()
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6138 string_property title , ""
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6139 radio_property titleposition , "{lefttop}|centertop|righttop|leftbottom|centerbottom|rightbottom"
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6140 radio_property units S , "{normalized}|inches|centimeters|points|pixels|characters"
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6141 // Octave-specific properties
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6142 any_property __object__ h , Matrix ()
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6143 END_PROPERTIES
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6144
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6145 protected:
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6146 void init (void)
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
6147 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6148 m_borderwidth.add_constraint ("min", 0.0, true);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6149 m_fontsize.add_constraint ("min", 0.0, false);
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6150 m_position.add_constraint (dim_vector (1, 4));
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19834
diff changeset
6151 }
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 18819
diff changeset
6152
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6153 OCTINTERP_API void update_units (const caseless_str& old_units);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6154 OCTINTERP_API void update_fontunits (const caseless_str& old_units);
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6155
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6156 };
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6157
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6158 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6159 properties m_properties;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6160
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6161 public:
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6162 uipanel (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6163 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
6164 { }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6165
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
6166 ~uipanel (void) = default;
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6167
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6168 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6169
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6170 const base_properties& get_properties (void) const { return m_properties; }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6171
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6172 bool valid_object (void) const { return true; }
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6173
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6174 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6175 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6176 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6177 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6178 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6179 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6180 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6181 };
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6182
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6183 // ---------------------------------------------------------------------
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6184
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6185 class OCTINTERP_API uitable : public base_graphics_object
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6186 {
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6187 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6188
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6189 class OCTINTERP_API properties : public base_properties
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6190 {
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6191 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6192
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6193 OCTINTERP_API Matrix
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6194 get_boundingbox (bool internal = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6195 const Matrix& parent_pix_size = Matrix ()) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6196
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6197 OCTINTERP_API double
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6198 get___fontsize_points__ (double box_pix_height = 0) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6199
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6200 OCTINTERP_API double
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6201 get_fontsize_pixels (double box_pix_height = 0) const;
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6202
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6203 // See the genprops.awk script for an explanation of the
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6204 // properties declarations.
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6205 // Programming note: Keep property list sorted if new ones are added.
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6206
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
6207 // FIXME: keypressfcn, keyreleasefcn, rearrangeablecolumns properties
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
6208 // seem to have been removed from Matlab.
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
6209
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6210 BEGIN_PROPERTIES (uitable)
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6211 any_property __object__ h , Matrix ()
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6212 array_property backgroundcolor , default_table_backgroundcolor ()
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6213 callback_property celleditcallback , Matrix ()
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6214 callback_property cellselectioncallback , Matrix ()
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6215 row_vector_property columneditable , Matrix ()
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
6216 any_property columnformat S , Cell ()
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6217 any_property columnname , "numbered"
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6218 any_property columnwidth S , "auto"
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6219 any_property data u , Matrix ()
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
6220 bool_property enable , "on"
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6221 array_property extent rG , Matrix (1, 4, 0.0)
28079
999351c323ce remove deprecated "oblique" value from fontangle graphics property
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
6222 radio_property fontangle u , "{normal}|italic"
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6223 string_property fontname u , OCTAVE_DEFAULT_FONTNAME
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6224 double_property fontsize u , 10
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6225 radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
6226 radio_property fontweight u , "{normal}|bold"
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6227 color_property foregroundcolor , color_values (0, 0, 0)
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6228 callback_property keypressfcn , Matrix ()
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6229 callback_property keyreleasefcn , Matrix ()
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6230 array_property position , default_table_position ()
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6231 bool_property rearrangeablecolumns , "off"
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6232 any_property rowname , "numbered"
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6233 bool_property rowstriping , "on"
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6234 string_property tooltipstring , ""
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6235 radio_property units S , "normalized|inches|centimeters|points|{pixels}|characters"
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6236 END_PROPERTIES
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6237
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6238 OCTINTERP_API Matrix get_extent_matrix (void) const;
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6239
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6240 OCTINTERP_API Matrix get_backgroundcolor_rgb (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6241
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6242 OCTINTERP_API Matrix get_alternatebackgroundcolor_rgb (void);
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6243
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6244 protected:
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6245 void init (void)
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6246 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6247 m_position.add_constraint (dim_vector (1, 4));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6248 m_extent.add_constraint (dim_vector (1, 4));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6249 m_backgroundcolor.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6250 m_backgroundcolor.add_constraint (dim_vector (-1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6251 m_columneditable.add_constraint ("logical");
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6252 }
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6253
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6254 OCTINTERP_API void update_units (const caseless_str& old_units);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6255 OCTINTERP_API void update_fontunits (const caseless_str& old_units);
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6256 void update_table_extent (void) { };
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6257 void update_data (void) { update_table_extent (); }
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6258 void update_fontname (void) { update_table_extent (); }
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6259 void update_fontsize (void) { update_table_extent (); }
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
6260 void update_fontangle (void)
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
6261 {
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
6262 update_table_extent ();
26122
4d1c6c60f6b3 Clean up implementation of uitable in 36e0e5b428e7.
Rik <rik@octave.org>
parents: 26112
diff changeset
6263 }
26275
dd97dc559679 maint: Remove deprecated graphics properties.
Rik <rik@octave.org>
parents: 26194
diff changeset
6264 void update_fontweight (void) { update_table_extent (); }
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6265 };
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6266
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6267 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6268 properties m_properties;
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6269
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6270 public:
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6271 uitable (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6272 : base_graphics_object (), m_properties (mh, p)
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6273 { }
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6274
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6275 ~uitable (void) { }
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6276
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6277 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6278
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6279 const base_properties& get_properties (void) const { return m_properties; }
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6280
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6281 bool valid_object (void) const { return true; }
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6282
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6283 bool has_readonly_property (const caseless_str& pname) const
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6284 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6285 bool retval = m_properties.has_readonly_property (pname);
26112
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6286 if (! retval)
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6287 retval = base_properties::has_readonly_property (pname);
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6288 return retval;
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6289 }
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6290 };
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6291
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6292 // ---------------------------------------------------------------------
36e0e5b428e7 Implement uitable (patch #9084)
Andrew Thornton <art27@cantab.net>
parents: 26107
diff changeset
6293
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6294 class OCTINTERP_API uitoolbar : public base_graphics_object
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6295 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6296 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6297
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6298 class OCTINTERP_API properties : public base_properties
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6299 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6300 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6301
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6302 // See the genprops.awk script for an explanation of the
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6303 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
6304 // Programming note: Keep property list sorted if new ones are added.
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6305
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6306 BEGIN_PROPERTIES (uitoolbar)
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6307 // Octave-specific properties
20593
3af34e1ef330 Preliminary inclusion of uixx objects properties in the manual (bug #46076)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20545
diff changeset
6308 any_property __object__ h , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6309 END_PROPERTIES
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6310
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6311 protected:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6312 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6313 { }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6314 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6315
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6316 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6317 properties m_properties;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6318
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6319 public:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6320 uitoolbar (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6321 : base_graphics_object (), m_properties (mh, p), m_default_properties ()
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
6322 { }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6323
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
6324 ~uitoolbar (void) = default;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6325
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6326 void override_defaults (base_graphics_object& obj)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6327 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6328 // Allow parent (figure) to override first (properties knows how
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6329 // to find the parent object).
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6330 m_properties.override_defaults (obj);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6331
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6332 // Now override with our defaults. If the default_properties
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6333 // list includes the properties for all defaults (line,
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6334 // surface, etc.) then we don't have to know the type of OBJ
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6335 // here, we just call its set function and let it decide which
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6336 // properties from the list to use.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6337 obj.set_from_list (m_default_properties);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6338 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6339
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6340 void set (const caseless_str& name, const octave_value& value)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6341 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6342 if (name.compare ("default", 7))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6343 // strip "default", pass rest to function that will
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6344 // parse the remainder and add the element to the
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6345 // default_properties map.
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6346 m_default_properties.set (name.substr (7), value);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6347 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6348 m_properties.set (name, value);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6349 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6350
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6351 octave_value get (const caseless_str& name) const
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6352 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6353 octave_value retval;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6354
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6355 if (name.compare ("default", 7))
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6356 retval = get_default (name.substr (7));
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6357 else
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6358 retval = m_properties.get (name);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6359
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6360 return retval;
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6361 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6362
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6363 OCTINTERP_API octave_value get_default (const caseless_str& name) const;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6364
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6365 octave_value get_defaults (void) const
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6366 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6367 return m_default_properties.as_struct ("default");
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6368 }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6369
19666
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
6370 property_list get_defaults_list (void) const
e7df12f37f71 Freset: avoid multiple reseting of properties (bug #43960)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19663
diff changeset
6371 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6372 return m_default_properties;
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6373 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6374
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6375 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6376
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6377 const base_properties& get_properties (void) const { return m_properties; }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6378
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6379 bool valid_object (void) const { return true; }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6380
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6381 OCTINTERP_API void reset_default_properties (void);
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6382
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6383 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6384 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6385 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6386 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6387 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6388 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6389 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6390
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6391 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6392 property_list m_default_properties;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6393 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6394
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6395 // ---------------------------------------------------------------------
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6396
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6397 class OCTINTERP_API uipushtool : public base_graphics_object
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6398 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6399 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6400
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6401 class OCTINTERP_API properties : public base_properties
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6402 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6403 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6404
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6405 // See the genprops.awk script for an explanation of the
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6406 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
6407 // Programming note: Keep property list sorted if new ones are added.
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6408
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6409 BEGIN_PROPERTIES (uipushtool)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6410 array_property cdata , Matrix ()
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
6411 callback_property clickedcallback , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6412 bool_property enable , "on"
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6413 bool_property separator , "off"
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6414 string_property tooltipstring , ""
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6415
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6416 // Octave-specific properties
26869
992f55ef87f5 Use an uitoolbar and ui*tools to build the default figure toolbar (bug #55795)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26858
diff changeset
6417 string_property __named_icon__ , ""
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6418 any_property __object__ h , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6419 END_PROPERTIES
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6420
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6421 protected:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6422 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6423 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6424 m_cdata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6425 m_cdata.add_constraint ("single");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6426 m_cdata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6427 m_cdata.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6428 m_cdata.add_constraint (dim_vector (0, 0));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6429 }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6430 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6431
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6432 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6433 properties m_properties;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6434
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6435 public:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6436 uipushtool (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6437 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
6438 { }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6439
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
6440 ~uipushtool (void) = default;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6441
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6442 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6443
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6444 const base_properties& get_properties (void) const { return m_properties; }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6445
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6446 bool valid_object (void) const { return true; }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6447
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6448 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6449 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6450 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6451 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6452 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6453 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6454 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6455
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6456 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6457
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6458 // ---------------------------------------------------------------------
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6459
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6460 class OCTINTERP_API uitoggletool : public base_graphics_object
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6461 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6462 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6463
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6464 class OCTINTERP_API properties : public base_properties
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6465 {
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6466 public:
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6467
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6468 // See the genprops.awk script for an explanation of the
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6469 // properties declarations.
17099
a033fd3669c0 Alphabetize graphic properties and add properties missing from Matlab.
Rik <rik@octave.org>
parents: 17098
diff changeset
6470 // Programming note: Keep property list sorted if new ones are added.
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6471
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6472 BEGIN_PROPERTIES (uitoggletool)
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6473 array_property cdata , Matrix ()
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
6474 callback_property clickedcallback , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6475 bool_property enable , "on"
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
6476 callback_property offcallback , Matrix ()
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14563
diff changeset
6477 callback_property oncallback , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6478 bool_property separator , "off"
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6479 bool_property state , "off"
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6480 string_property tooltipstring , ""
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6481
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6482 // Octave-specific properties
26869
992f55ef87f5 Use an uitoolbar and ui*tools to build the default figure toolbar (bug #55795)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26858
diff changeset
6483 string_property __named_icon__ , ""
24452
55ddb7a4cca2 Create "pickableparts" as a base graphics property.
Rik <rik@octave.org>
parents: 24451
diff changeset
6484 any_property __object__ h , Matrix ()
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6485 END_PROPERTIES
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6486
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6487 protected:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6488 void init (void)
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6489 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6490 m_cdata.add_constraint ("double");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6491 m_cdata.add_constraint ("single");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6492 m_cdata.add_constraint ("uint8");
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6493 m_cdata.add_constraint (dim_vector (-1, -1, 3));
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6494 m_cdata.add_constraint (dim_vector (0, 0));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6495 }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6496 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6497
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6498 private:
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6499 properties m_properties;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6500
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6501 public:
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6502 uitoggletool (const graphics_handle& mh, const graphics_handle& p)
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6503 : base_graphics_object (), m_properties (mh, p)
20051
10600b2dd3c1 make units other than data work for axes labels and title (bug #35857)
John W. Eaton <jwe@octave.org>
parents: 20045
diff changeset
6504 { }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6505
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
6506 ~uitoggletool (void) = default;
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6507
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6508 base_properties& get_properties (void) { return m_properties; }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6509
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6510 const base_properties& get_properties (void) const { return m_properties; }
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6511
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6512 bool valid_object (void) const { return true; }
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6513
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6514 bool has_readonly_property (const caseless_str& pname) const
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6515 {
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6516 bool retval = m_properties.has_readonly_property (pname);
18567
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6517 if (! retval)
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6518 retval = base_properties::has_readonly_property (pname);
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6519 return retval;
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6520 }
8d5cb159fbc7 Add methods to determine if a graphic property is read-only (bug #41629).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 18119
diff changeset
6521
13703
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6522 };
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6523
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6524 // ---------------------------------------------------------------------
22ce748da25f Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13699
diff changeset
6525
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6526 OCTINTERP_API octave_value
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
6527 get_property_from_handle (double handle, const std::string& property,
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
6528 const std::string& func);
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6529 OCTINTERP_API bool
18119
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
6530 set_property_in_handle (double handle, const std::string& property,
ec9b35e60f95 style fixes in graphics.in.h and graphics.cc
John W. Eaton <jwe@octave.org>
parents: 18118
diff changeset
6531 const octave_value& arg, const std::string& func);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6532
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6533 // ---------------------------------------------------------------------
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6534
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6535 class graphics_event;
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6536
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6537 class
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6538 OCTINTERP_API
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6539 base_graphics_event
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6540 {
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6541 public:
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6542 enum priority { INTERRUPT, QUEUE, CANCEL };
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6543
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6544 friend class graphics_event;
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6545
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6546 base_graphics_event (void)
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6547 : m_busyaction (QUEUE)
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6548 { };
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6549
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6550 base_graphics_event (int busyaction)
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6551 : m_busyaction (busyaction)
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6552 { };
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6553
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
6554 virtual ~base_graphics_event (void) = default;
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6555
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6556 int get_busyaction (void) { return m_busyaction; };
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6557
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6558 virtual void execute (void) = 0;
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6559
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6560 private:
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6561 int m_busyaction;
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6562 };
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6563
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6564 class
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6565 OCTINTERP_API
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6566 graphics_event
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6567 {
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6568 public:
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6569
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6570 typedef void (*event_fcn) (void*);
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6571
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6572 graphics_event (void) = default;
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6573
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6574 graphics_event (base_graphics_event *new_rep) : m_rep (new_rep) { }
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6575
24991
831389905438 omit argument name from default copy ctors and assignment operators
John W. Eaton <jwe@octave.org>
parents: 24795
diff changeset
6576 graphics_event (const graphics_event&) = default;
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6577
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6578 ~graphics_event (void) = default;
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6579
24991
831389905438 omit argument name from default copy ctors and assignment operators
John W. Eaton <jwe@octave.org>
parents: 24795
diff changeset
6580 graphics_event& operator = (const graphics_event&) = default;
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6581
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6582 int get_busyaction (void)
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6583 {
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6584 if (ok ())
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6585 return m_rep->get_busyaction ();
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6586 else
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6587 error ("graphics_event::busyaction: invalid graphics_event");
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6588 }
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6589
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6590 void execute (void)
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6591 {
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6592 if (ok ())
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6593 m_rep->execute ();
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6594 }
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6595
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6596 bool ok (void) const { return (m_rep != nullptr); }
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6597
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6598 static OCTINTERP_API graphics_event
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6599 create_callback_event (const graphics_handle& h,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6600 const std::string& name,
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6601 const octave_value& data = Matrix (),
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6602 int busyaction = base_graphics_event::QUEUE);
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6603
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6604 static OCTINTERP_API graphics_event
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6605 create_callback_event (const graphics_handle& h,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6606 const octave_value& cb,
25960
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6607 const octave_value& data = Matrix (),
ae9d6a491c06 Refactor graphics event handling and fix interruption of callbacks (bug #54340)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25903
diff changeset
6608 int busyaction = base_graphics_event::QUEUE);
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6609
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6610 static OCTINTERP_API graphics_event
26520
278ae90567a7 Don't use C++ callback to notify close request from Qt Figures (bug #54187)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26469
diff changeset
6611 create_mcode_event (const graphics_handle& h, const std::string& cmd,
278ae90567a7 Don't use C++ callback to notify close request from Qt Figures (bug #54187)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26469
diff changeset
6612 int busyaction);
278ae90567a7 Don't use C++ callback to notify close request from Qt Figures (bug #54187)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26469
diff changeset
6613
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6614 static OCTINTERP_API graphics_event
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23450
diff changeset
6615 create_function_event (event_fcn fcn, void *data = nullptr);
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6616
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6617 static OCTINTERP_API graphics_event
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6618 create_set_event (const graphics_handle& h, const std::string& name,
26469
bf835b1d04b1 Don't use C++ callbacks to notify position changes from Qt figures (bug #48519)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26383
diff changeset
6619 const octave_value& value, bool notify_toolkit = true,
bf835b1d04b1 Don't use C++ callbacks to notify position changes from Qt figures (bug #48519)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26383
diff changeset
6620 bool redraw_figure = false);
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6621 private:
24252
f8c263f961c1 use shared_ptr to manage graphics_object and graphics_event objects
John W. Eaton <jwe@octave.org>
parents: 24191
diff changeset
6622
29889
3ab696e02f55 use m_ prefix for data members in graphics objects and properties classes
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
6623 std::shared_ptr <base_graphics_event> m_rep;
7964
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6624 };
9cd3ee5298a0 Use common rep/class pattern for graphics events
John W. Eaton <jwe@octave.org>
parents: 7936
diff changeset
6625
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
6626 class OCTINTERP_API gh_manager
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6627 {
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6628 public:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6629
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6630 OCTINTERP_API gh_manager (octave::interpreter& interp);
27321
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6631
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6632 // FIXME: eventually eliminate these static functions and access
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6633 // gh_manager object through the interpreter.
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6634
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6635 OCTINTERP_API graphics_handle get_handle (bool integer_figure_handle);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6636
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6637 OCTINTERP_API void free (const graphics_handle& h, bool from_root = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6638
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6639 OCTINTERP_API void renumber_figure (const graphics_handle& old_gh,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6640 const graphics_handle& new_gh);
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6641
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6642 graphics_handle lookup (double val) const
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6643 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6644 const_iterator p = (octave::math::isnan (val)
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6645 ? m_handle_map.end () : m_handle_map.find (val));
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6646
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6647 return (p != m_handle_map.end ()) ? p->first : graphics_handle ();
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6648 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6649
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6650 graphics_handle lookup (const octave_value& val) const
10265
8c583af2cf64 validate text object children of axes objects
John W. Eaton <jwe@octave.org>
parents: 10161
diff changeset
6651 {
27321
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6652 return (val.is_real_scalar ()
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6653 ? lookup (val.double_value ()) : graphics_handle ());
10265
8c583af2cf64 validate text object children of axes objects
John W. Eaton <jwe@octave.org>
parents: 10161
diff changeset
6654 }
8c583af2cf64 validate text object children of axes objects
John W. Eaton <jwe@octave.org>
parents: 10161
diff changeset
6655
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6656 graphics_object get_object (double val) const
12324
85934e0fcce9 gl-renderer.cc and gl2ps-renderer.cc: access objects directly from gh_manager instead of working with handles
John W. Eaton <jwe@octave.org>
parents: 12174
diff changeset
6657 {
85934e0fcce9 gl-renderer.cc and gl2ps-renderer.cc: access objects directly from gh_manager instead of working with handles
John W. Eaton <jwe@octave.org>
parents: 12174
diff changeset
6658 return get_object (lookup (val));
85934e0fcce9 gl-renderer.cc and gl2ps-renderer.cc: access objects directly from gh_manager instead of working with handles
John W. Eaton <jwe@octave.org>
parents: 12174
diff changeset
6659 }
85934e0fcce9 gl-renderer.cc and gl2ps-renderer.cc: access objects directly from gh_manager instead of working with handles
John W. Eaton <jwe@octave.org>
parents: 12174
diff changeset
6660
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6661 graphics_object get_object (const graphics_handle& h) const
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6662 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6663 const_iterator p = (h.ok () ? m_handle_map.find (h) : m_handle_map.end ());
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6664
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6665 return (p != m_handle_map.end ()) ? p->second : graphics_object ();
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6666 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6667
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6668 OCTINTERP_API graphics_handle
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6669 make_graphics_handle (const std::string& go_name,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6670 const graphics_handle& p,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6671 bool integer_figure_handle = false,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6672 bool call_createfcn = true,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6673 bool notify_toolkit = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6674
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6675 OCTINTERP_API graphics_handle
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6676 make_figure_handle (double val, bool notify_toolkit = true);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6677
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6678 OCTINTERP_API void push_figure (const graphics_handle& h);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6679
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6680 OCTINTERP_API void pop_figure (const graphics_handle& h);
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6681
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6682 graphics_handle current_figure (void) const
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6683 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6684 graphics_handle retval;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6685
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6686 for (const auto& hfig : m_figure_list)
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6687 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6688 if (is_handle_visible (hfig))
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6689 retval = hfig;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6690 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6691
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6692 return retval;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6693 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6694
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6695 Matrix handle_list (bool show_hidden = false)
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6696 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6697 Matrix retval (1, m_handle_map.size ());
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6698
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6699 octave_idx_type i = 0;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6700 for (const auto& h_iter : m_handle_map)
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6701 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6702 graphics_handle h = h_iter.first;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6703
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6704 if (show_hidden || is_handle_visible (h))
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6705 retval(i++) = h.value ();
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6706 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6707
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6708 retval.resize (1, i);
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6709
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6710 return retval;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6711 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6712
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6713 void lock (void) { m_graphics_lock.lock (); }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6714
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6715 bool try_lock (void) { return m_graphics_lock.try_lock (); }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6716
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6717 void unlock (void) { m_graphics_lock.unlock (); }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6718
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6719 Matrix figure_handle_list (bool show_hidden = false)
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6720 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6721 Matrix retval (1, m_figure_list.size ());
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6722
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6723 octave_idx_type i = 0;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6724 for (const auto& hfig : m_figure_list)
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6725 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6726 if (show_hidden || is_handle_visible (hfig))
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6727 retval(i++) = hfig.value ();
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6728 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6729
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6730 retval.resize (1, i);
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6731
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6732 return retval;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6733 }
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6734
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6735 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6736 execute_listener (const graphics_handle& h, const octave_value& l);
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6737
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6738 void execute_callback (const graphics_handle& h,
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6739 const std::string& name,
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6740 const octave_value& data = Matrix ())
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6741 {
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6742 octave_value cb;
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6743
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6744 if (true)
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6745 {
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6746 octave::autolock guard (graphics_lock ());
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6747
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6748 graphics_object go = get_object (h);
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6749
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6750 if (go.valid_object ())
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6751 cb = go.get (name);
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6752 }
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6753
20545
c547458dc10e eliminate error_state from most header files
John W. Eaton <jwe@octave.org>
parents: 20459
diff changeset
6754 execute_callback (h, cb, data);
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6755 }
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6756
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6757 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6758 execute_callback (const graphics_handle& h, const octave_value& cb,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6759 const octave_value& data = Matrix ());
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6760
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6761 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6762 post_callback (const graphics_handle& h, const std::string& name,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6763 const octave_value& data = Matrix ());
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6764
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6765 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6766 post_function (graphics_event::event_fcn fcn, void *fcn_data = nullptr);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6767
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6768 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6769 post_set (const graphics_handle& h, const std::string& name,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6770 const octave_value& value, bool notify_toolkit = true,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6771 bool redraw_figure = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6772
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6773 OCTINTERP_API int process_events (bool force = false);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6774
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6775 OCTINTERP_API void enable_event_processing (bool enable = true);
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6776
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6777 bool is_handle_visible (const graphics_handle& h) const
8249
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6778 {
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6779 bool retval = false;
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6780
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6781 graphics_object go = get_object (h);
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6782
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6783 if (go.valid_object ())
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6784 retval = go.is_handle_visible ();
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6785
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6786 return retval;
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6787 }
1f429086565c [mq]: hidden-children
John W. Eaton <jwe@octave.org>
parents: 8247
diff changeset
6788
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6789 OCTINTERP_API void close_all_figures (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6790
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6791 OCTINTERP_API void restore_gcbo (void);
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6792
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6793 OCTINTERP_API void post_event (const graphics_event& e);
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6794
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6795 octave::mutex graphics_lock (void)
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6796 {
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6797 return m_graphics_lock;
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27327
diff changeset
6798 }
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6799
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6800 private:
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6801
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6802 typedef std::map<graphics_handle, graphics_object>::iterator iterator;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6803 typedef std::map<graphics_handle, graphics_object>::const_iterator
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
6804 const_iterator;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6805
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6806 typedef std::set<graphics_handle>::iterator free_list_iterator;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6807 typedef std::set<graphics_handle>::const_iterator const_free_list_iterator;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6808
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6809 typedef std::list<graphics_handle>::iterator figure_list_iterator;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6810 typedef std::list<graphics_handle>::const_iterator const_figure_list_iterator;
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6811
27321
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6812 octave::interpreter& m_interpreter;
eddce82a57cc don't use singleton pattern for gh_manager object
John W. Eaton <jwe@octave.org>
parents: 27320
diff changeset
6813
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6814 // A map of handles to graphics objects.
27327
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6815 std::map<graphics_handle, graphics_object> m_handle_map;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6816
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6817 // The available graphics handles.
27327
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6818 std::set<graphics_handle> m_handle_free_list;
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6819
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6820 // The next handle available if m_handle_free_list is empty.
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6821 double m_next_handle;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6822
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6823 // The allocated figure handles. Top of the stack is most recently
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6824 // created.
27327
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6825 std::list<graphics_handle> m_figure_list;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6826
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
6827 // The lock for accessing the graphics sytsem.
27327
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6828 octave::mutex m_graphics_lock;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6829
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
6830 // The list of events queued by graphics toolkits.
27327
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6831 std::list<graphics_event> m_event_queue;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6832
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
6833 // The stack of callback objects.
27327
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6834 std::list<graphics_object> m_callback_objects;
7936
78400fde223e Support for backend-to-octave event management
John W. Eaton <jwe@octave.org>
parents: 7902
diff changeset
6835
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13236
diff changeset
6836 // A flag telling whether event processing must be constantly on.
27327
728e4d99febb use m_ prefix for gh_manager data members
John W. Eaton <jwe@octave.org>
parents: 27321
diff changeset
6837 int m_event_processing;
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6838 };
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6839
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6840 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6841 get_children_limits (double& min_val, double& max_val,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6842 double& min_pos, double& max_neg,
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29163
diff changeset
6843 const Matrix& kids, char limit_type);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6844
10917
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10792
diff changeset
6845 OCTINTERP_API int calc_dimensions (const graphics_object& gh);
888c75785221 Improvements to FLTK backend rotation
Jordi Guti?rrez Hermoso <jordigh@gmail.com>
parents: 10792
diff changeset
6846
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6847 // This function is NOT equivalent to the scripting language function gcf.
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
6848 OCTINTERP_API graphics_handle gcf (void);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6849
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6850 // This function is NOT equivalent to the scripting language function gca.
7365
f5e801eee0d1 [project @ 2008-01-13 06:33:32 by jwe]
jwe
parents: 7364
diff changeset
6851 OCTINTERP_API graphics_handle gca (void);
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
6852
14014
907d03def9d5 explicitly close figures in clean_up_and_exit instead of using an atexit function
John W. Eaton <jwe@octave.org>
parents: 13992
diff changeset
6853 OCTINTERP_API void 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: 13992
diff changeset
6854
29993
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6855 OCTAVE_NAMESPACE_END
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6856
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6857 #if defined (OCTAVE_PROVIDE_DEPRECATED_SYMBOLS)
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6858
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6859 OCTAVE_DEPRECATED (7, "use 'octave::base_scaler' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6860 typedef octave::base_scaler base_scaler;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6861
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6862 OCTAVE_DEPRECATED (7, "use 'octave::lin_scaler' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6863 typedef octave::lin_scaler lin_scaler;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6864
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6865 OCTAVE_DEPRECATED (7, "use 'octave::log_scaler' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6866 typedef octave::log_scaler log_scaler;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6867
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6868 OCTAVE_DEPRECATED (7, "use 'octave::neg_log_scaler' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6869 typedef octave::neg_log_scaler neg_log_scaler;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6870
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6871 OCTAVE_DEPRECATED (7, "use 'octave::scaler' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6872 typedef octave::scaler scaler;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6873
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6874 OCTAVE_DEPRECATED (7, "use 'octave::base_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6875 typedef octave::base_property base_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6876
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6877 OCTAVE_DEPRECATED (7, "use 'octave::string_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6878 typedef octave::string_property string_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6879
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6880 OCTAVE_DEPRECATED (7, "use 'octave::string_array_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6881 typedef octave::string_array_property string_array_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6882
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6883 OCTAVE_DEPRECATED (7, "use 'octave::text_label_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6884 typedef octave::text_label_property text_label_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6885
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6886 OCTAVE_DEPRECATED (7, "use 'octave::radio_values' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6887 typedef octave::radio_values radio_values;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6888
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6889 OCTAVE_DEPRECATED (7, "use 'octave::radio_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6890 typedef octave::radio_property radio_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6891
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6892 OCTAVE_DEPRECATED (7, "use 'octave::color_values' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6893 typedef octave::color_values color_values;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6894
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6895 OCTAVE_DEPRECATED (7, "use 'octave::color_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6896 typedef octave::color_property color_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6897
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6898 OCTAVE_DEPRECATED (7, "use 'octave::double_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6899 typedef octave::double_property double_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6900
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6901 OCTAVE_DEPRECATED (7, "use 'octave::double_radio_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6902 typedef octave::double_radio_property double_radio_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6903
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6904 OCTAVE_DEPRECATED (7, "use 'octave::array_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6905 typedef octave::array_property array_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6906
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6907 OCTAVE_DEPRECATED (7, "use 'octave::row_vector_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6908 typedef octave::row_vector_property row_vector_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6909
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6910 OCTAVE_DEPRECATED (7, "use 'octave::bool_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6911 typedef octave::bool_property bool_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6912
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6913 OCTAVE_DEPRECATED (7, "use 'octave::handle_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6914 typedef octave::handle_property handle_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6915
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6916 OCTAVE_DEPRECATED (7, "use 'octave::any_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6917 typedef octave::any_property any_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6918
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6919 OCTAVE_DEPRECATED (7, "use 'octave::children_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6920 typedef octave::children_property children_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6921
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6922 OCTAVE_DEPRECATED (7, "use 'octave::callback_property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6923 typedef octave::callback_property callback_property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6924
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6925 OCTAVE_DEPRECATED (7, "use 'octave::property' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6926 typedef octave::property property;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6927
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6928 OCTAVE_DEPRECATED (7, "use 'octave::pval_vector' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6929 typedef octave::pval_vector pval_vector;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6930
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6931 OCTAVE_DEPRECATED (7, "use 'octave::property_list' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6932 typedef octave::property_list property_list;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6933
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6934 OCTAVE_DEPRECATED (7, "use 'octave::base_properties' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6935 typedef octave::base_properties base_properties;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6936
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6937 OCTAVE_DEPRECATED (7, "use 'octave::base_graphics_object' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6938 typedef octave::base_graphics_object base_graphics_object;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6939
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6940 OCTAVE_DEPRECATED (7, "use 'octave::graphics_object' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6941 typedef octave::graphics_object graphics_object;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6942
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6943 OCTAVE_DEPRECATED (7, "use 'octave::root_figure' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6944 typedef octave::root_figure root_figure;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6945
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6946 OCTAVE_DEPRECATED (7, "use 'octave::figure' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6947 typedef octave::figure figure;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6948
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6949 OCTAVE_DEPRECATED (7, "use 'octave::graphics_xform' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6950 typedef octave::graphics_xform graphics_xform;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6951
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6952 OCTAVE_DEPRECATED (7, "use 'octave::axes' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6953 typedef octave::axes axes;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6954
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6955 OCTAVE_DEPRECATED (7, "use 'octave::line' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6956 typedef octave::line line;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6957
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6958 OCTAVE_DEPRECATED (7, "use 'octave::text' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6959 typedef octave::text text;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6960
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6961 OCTAVE_DEPRECATED (7, "use 'octave::image' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6962 typedef octave::image image;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6963
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6964 OCTAVE_DEPRECATED (7, "use 'octave::light' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6965 typedef octave::light light;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6966
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6967 OCTAVE_DEPRECATED (7, "use 'octave::patch' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6968 typedef octave::patch patch;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6969
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6970 OCTAVE_DEPRECATED (7, "use 'octave::scatter' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6971 typedef octave::scatter scatter;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6972
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6973 OCTAVE_DEPRECATED (7, "use 'octave::surface' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6974 typedef octave::surface surface;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6975
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6976 OCTAVE_DEPRECATED (7, "use 'octave::hggroup' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6977 typedef octave::hggroup hggroup;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6978
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6979 OCTAVE_DEPRECATED (7, "use 'octave::uimenu' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6980 typedef octave::uimenu uimenu;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6981
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6982 OCTAVE_DEPRECATED (7, "use 'octave::uicontextmenu' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6983 typedef octave::uicontextmenu uicontextmenu;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6984
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6985 OCTAVE_DEPRECATED (7, "use 'octave::uicontrol' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6986 typedef octave::uicontrol uicontrol;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6987
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6988 OCTAVE_DEPRECATED (7, "use 'octave::uibuttongroup' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6989 typedef octave::uibuttongroup uibuttongroup;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6990
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6991 OCTAVE_DEPRECATED (7, "use 'octave::uipanel' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6992 typedef octave::uipanel uipanel;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6993
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6994 OCTAVE_DEPRECATED (7, "use 'octave::uitable' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6995 typedef octave::uitable uitable;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6996
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6997 OCTAVE_DEPRECATED (7, "use 'octave::uitoolbar' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6998 typedef octave::uitoolbar uitoolbar;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
6999
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7000 OCTAVE_DEPRECATED (7, "use 'octave::uipushtool' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7001 typedef octave::uipushtool uipushtool;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7002
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7003 OCTAVE_DEPRECATED (7, "use 'octave::uitoggletool' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7004 typedef octave::uitoggletool uitoggletool;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7005
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7006 OCTAVE_DEPRECATED (7, "use 'octave::base_graphics_event' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7007 typedef octave::base_graphics_event base_graphics_event;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7008
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7009 OCTAVE_DEPRECATED (7, "use 'octave::graphics_event' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7010 typedef octave::graphics_event graphics_event;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7011
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7012 OCTAVE_DEPRECATED (7, "use 'octave::gh_manager' instead")
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7013 typedef octave::gh_manager gh_manager;
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7014
6874
94bda6abc224 [project @ 2007-09-06 21:34:24 by jwe]
jwe
parents:
diff changeset
7015 #endif
29993
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7016
b5fae48ad807 move classes for graphics objects and properties inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29913
diff changeset
7017 #endif