annotate src/graphics.h @ 6800:afbd31bb7b4e ss-2-9-13

[project @ 2007-07-25 20:54:34 by jwe]
author jwe
date Wed, 25 Jul 2007 20:54:34 +0000
parents f1157da78825
children 0089a504fdd6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
1 /*
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
2
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
3 Copyright (C) 2007 John W. Eaton
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
4
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
5 This file is part of Octave.
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
6
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
10 later version.
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
11
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
15 for more details.
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
16
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
19 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
20 02110-1301, USA.
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
21
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
22 */
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
23
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
24 #if !defined (graphics_h)
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
25 #define graphics_h 1
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
26
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
27 #ifdef HAVE_CONFIG_H
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
28 #include <config.h>
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
29 #endif
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
30
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
31 #include <cctype>
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
32
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
33 #include <algorithm>
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
34 #include <list>
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
35 #include <map>
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
36 #include <set>
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
37 #include <string>
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
38
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
39 #include "oct-map.h"
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
40 #include "ov.h"
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
41
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
42 #define OCTAVE_GRAPHICS_PROPERTY_INTERNAL(TAG, TYPE, NAME) \
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
43 private: TAG TYPE NAME; \
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
44 public: const TYPE& get_ ## NAME () const { return NAME; } \
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
45 private:
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
46
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
47 #define OCTAVE_GRAPHICS_PROPERTY(TYPE, NAME) \
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
48 OCTAVE_GRAPHICS_PROPERTY_INTERNAL ( , TYPE, NAME)
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
49
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
50 #define OCTAVE_GRAPHICS_MUTABLE_PROPERTY(TYPE, NAME) \
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
51 OCTAVE_GRAPHICS_PROPERTY_INTERNAL (mutable, TYPE, NAME)
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
52
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
53 class
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
54 radio_values
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
55 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
56 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
57 radio_values (const std::string& opt_string = std::string ());
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
58 radio_values (const radio_values& a)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
59 : default_val (a.default_val), possible_vals (a.possible_vals) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
60
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
61 radio_values& operator = (const radio_values& a)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
62 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
63 if (&a != this)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
64 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
65 default_val = a.default_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
66 possible_vals = a.possible_vals;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
67 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
68
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
69 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
70 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
71
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
72 std::string default_value (void) const { return default_val; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
73
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
74 std::set<std::string> possible_values (void) const { return possible_vals; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
75
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
76 bool validate (const std::string& val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
77 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
78 bool retval = true;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
79
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
80 if (possible_vals.find (val) == possible_vals.end ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
81 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
82 error ("invalid value = %s", val.c_str ());
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
83 retval = false;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
84 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
85
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
86 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
87 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
88
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
89 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
90 // Might also want to cache
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
91 std::string default_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
92 std::set<std::string> possible_vals;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
93 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
94
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
95 class
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
96 radio_property
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
97 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
98 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
99 radio_property (const radio_values& v)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
100 : vals (v), current_val (v.default_value ()) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
101
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
102 radio_property (const radio_values& v, const std::string& initial_value)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
103 : vals (v), current_val (initial_value) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
104
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
105 radio_property (const radio_property& a)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
106 : vals (a.vals), current_val (a.current_val) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
107
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
108 radio_property& operator = (const radio_property& a)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
109 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
110 if (&a != this)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
111 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
112 vals = a.vals;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
113 current_val = a.current_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
114 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
115
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
116 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
117 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
118
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
119 radio_property& operator = (const std::string& newval)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
120 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
121 if (vals.validate (newval))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
122 current_val = newval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
123
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
124 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
125 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
126
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
127 const std::string& current_value (void) const { return current_val; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
128
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
129 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
130 radio_values vals;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
131 std::string current_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
132 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
133
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
134 class
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
135 color_values
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
136 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
137 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
138 color_values (double r = 0, double g = 0, double b = 1)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
139 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
140 xrgb[0] = r;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
141 xrgb[1] = g;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
142 xrgb[2] = b;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
143
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
144 validate ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
145 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
146
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6734
diff changeset
147 color_values (std::string str)
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
148 {
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6734
diff changeset
149 if (! str2rgb (str))
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
150 error ("invalid color specification");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
151 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
152
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
153 color_values (const color_values& c)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
154 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
155 xrgb[0] = c.xrgb[0];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
156 xrgb[1] = c.xrgb[1];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
157 xrgb[2] = c.xrgb[2];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
158 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
159
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
160 color_values& operator = (const color_values& c)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
161 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
162 if (&c != this)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
163 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
164 xrgb[0] = c.xrgb[0];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
165 xrgb[1] = c.xrgb[1];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
166 xrgb[2] = c.xrgb[2];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
167
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
168 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
169
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
170 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
171 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
172
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
173 const double* rgb (void) const { return xrgb; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
174
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
175 void validate (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
176 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
177 for (int i = 0; i < 3; i++)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
178 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
179 if (xrgb[i] < 0 || xrgb[i] > 1)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
180 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
181 error ("invalid RGB color specification");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
182 break;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
183 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
184 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
185 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
186
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
187 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
188 double xrgb[3];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
189
6761
813172f035de [project @ 2007-06-27 15:08:05 by jwe]
jwe
parents: 6734
diff changeset
190 bool str2rgb (std::string str);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
191 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
192
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
193
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
194 class
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
195 color_property
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
196 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
197 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
198 color_property (const color_values& c = color_values (),
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
199 const radio_values& v = radio_values ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
200 : current_type (color_t), color_val (c), radio_val (v),
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
201 current_val (v.default_value ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
202 { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
203
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
204 color_property (const radio_values& v)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
205 : current_type (radio_t), color_val (color_values ()), radio_val (v),
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
206 current_val (v.default_value ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
207 { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
208
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
209 color_property (const radio_values& v, const std::string& initial_value)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
210 : current_type (radio_t), color_val (color_values ()), radio_val (v),
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
211 current_val (initial_value)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
212 { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
213
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
214 color_property (const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
215
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
216 operator octave_value (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
217 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
218 if (current_type == color_t)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
219 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
220 Matrix retval (1, 3);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
221 const double *xrgb = color_val.rgb ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
222
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
223 for (int i = 0; i < 3 ; i++)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
224 retval(i) = xrgb[i];
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
225
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
226 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
227 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
228
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
229 return current_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
230 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
231
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
232 color_property& operator = (const color_property& a)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
233 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
234 if (&a != this)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
235 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
236 current_type = a.current_type;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
237 color_val = a.color_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
238 radio_val = a.radio_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
239 current_val = a.current_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
240 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
241
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
242 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
243 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
244
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
245 color_property& operator = (const std::string& newval)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
246 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
247 if (radio_val.validate (newval))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
248 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
249 current_val = newval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
250 current_type = radio_t;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
251 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
252
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
253 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
254 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
255
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
256 color_property& operator = (const color_values& newval)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
257 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
258 color_val = newval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
259 current_type = color_t;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
260
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
261 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
262 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
263
6790
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
264 color_property& operator = (const octave_value& newval);
f1157da78825 [project @ 2007-07-24 19:02:27 by jwe]
jwe
parents: 6765
diff changeset
265
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
266 bool is_rgb (void) const { return (current_type == color_t); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
267
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
268 bool is_radio (void) const { return (current_type == radio_t); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
269
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
270 const double* rgb (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
271 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
272 if (current_type != color_t)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
273 error ("color has no rgb value");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
274
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
275 return color_val.rgb ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
276 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
277
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
278 const std::string& current_value (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
279 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
280 if (current_type != radio_t)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
281 error ("color has no radio value");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
282
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
283 return current_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
284 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
285
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
286 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
287 enum current_enum { color_t, radio_t } current_type;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
288 color_values color_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
289 radio_values radio_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
290 std::string current_val;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
291 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
292
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
293 class
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
294 colormap_property
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
295 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
296 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
297 colormap_property (const Matrix& m = Matrix ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
298 : cmap (m)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
299 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
300 if (cmap.is_empty ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
301 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
302 cmap = Matrix (64, 3);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
303
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
304 for (octave_idx_type i = 0; i < 64; i++)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
305 cmap(i,0) = cmap(i,1) = cmap(i,2) = i / 64.0;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
306 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
307
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
308 validate ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
309 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
310
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
311 colormap_property (const octave_value& val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
312 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
313 cmap = val.matrix_value ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
314
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
315 validate ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
316 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
317
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
318 void validate (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
319 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
320 if (error_state || cmap.columns () != 3)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
321 error ("invalid colormap specification");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
322 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
323
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
324 operator octave_value (void) const { return cmap; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
325
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
326 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
327 Matrix cmap;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
328 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
329
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
330 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
331
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
332 class property_name : public std::string
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
333 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
334 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
335 typedef std::string::iterator iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
336 typedef std::string::const_iterator const_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
337
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
338 property_name (void) : std::string () { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
339 property_name (const std::string& s) : std::string (s) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
340 property_name (const char *s) : std::string (s) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
341
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
342 property_name (const property_name& name) : std::string (name) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
343
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
344 property_name& operator = (const property_name& pname)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
345 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
346 std::string::operator = (pname);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
347 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
348 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
349
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
350 operator std::string (void) const { return *this; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
351
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
352 // Case-insensitive comparison.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
353 bool compare (const std::string& s, size_t limit = NPOS) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
354 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
355 const_iterator p1 = begin ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
356 const_iterator p2 = s.begin ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
357
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
358 size_t k = 0;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
359
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
360 while (p1 != end () && p2 != s.end () && k++ < limit)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
361 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
362 if (std::tolower (*p1) != std::tolower (*p2))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
363 return false;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
364
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
365 *p1++;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
366 *p2++;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
367 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
368
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
369 return (limit == NPOS) ? size () == s.size () : k == limit;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
370 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
371 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
372
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
373 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
374
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
375 class property_list
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
376 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
377 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
378 typedef std::map<std::string, octave_value> pval_map_type;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
379 typedef std::map<std::string, pval_map_type> plist_map_type;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
380
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
381 typedef pval_map_type::iterator pval_map_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
382 typedef pval_map_type::const_iterator pval_map_const_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
383
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
384 typedef plist_map_type::iterator plist_map_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
385 typedef plist_map_type::const_iterator plist_map_const_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
386
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
387 property_list (const plist_map_type& m = plist_map_type ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
388 : plist_map (m) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
389
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
390 ~property_list (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
391
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
392 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
393
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
394 octave_value lookup (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
395
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
396 plist_map_iterator begin (void) { return plist_map.begin (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
397 plist_map_const_iterator begin (void) const { return plist_map.begin (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
398
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
399 plist_map_iterator end (void) { return plist_map.end (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
400 plist_map_const_iterator end (void) const { return plist_map.end (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
401
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
402 plist_map_iterator find (const std::string& go_name)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
403 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
404 return plist_map.find (go_name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
405 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
406
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
407 plist_map_const_iterator find (const std::string& go_name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
408 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
409 return plist_map.find (go_name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
410 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
411
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
412 Octave_map as_struct (const std::string& prefix_arg) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
413
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
414 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
415 plist_map_type plist_map;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
416 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
417
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
418 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
419
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
420 typedef double graphics_handle;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
421
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
422 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
423
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
424 class base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
425 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
426 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
427 friend class graphics_object;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
428
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
429 base_graphics_object (void) : count (1) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
430
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
431 base_graphics_object (const base_graphics_object&) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
432
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
433 virtual ~base_graphics_object (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
434
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
435 virtual void mark_modified (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
436 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
437 error ("base_graphics_object::mark_modified: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
438 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
439
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
440 virtual void override_defaults (base_graphics_object&)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
441 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
442 error ("base_graphics_object::override_defaults: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
443 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
444
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
445 virtual void set_from_list (property_list&)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
446 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
447 error ("base_graphics_object::set_from_list: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
448 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
449
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
450 virtual void set (const property_name&, const octave_value&)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
451 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
452 error ("base_graphics_object::set: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
453 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
454
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
455 virtual void set_defaults (const std::string&)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
456 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
457 error ("base_graphics_object::set_defaults: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
458 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
459
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
460 virtual octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
461 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
462 error ("base_graphics_object::get: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
463 return octave_value ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
464 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
465
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
466 virtual octave_value get (const property_name&) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
467 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
468 error ("base_graphics_object::get: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
469 return octave_value ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
470 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
471
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
472 virtual octave_value get_default (const property_name&) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
473
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
474 virtual octave_value get_factory_default (const property_name&) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
475
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
476 virtual octave_value get_defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
477 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
478 error ("base_graphics_object::get_defaults: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
479 return octave_value ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
480 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
481
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
482 virtual octave_value get_factory_defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
483 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
484 error ("base_graphics_object::get_factory_defaults: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
485 return octave_value ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
486 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
487
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
488 virtual graphics_handle get_parent (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
489 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
490 error ("base_graphics_object::get_parent: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
491 return octave_NaN;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
492 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
493
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
494 virtual void remove_child (const graphics_handle&)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
495 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
496 error ("base_graphics_object::remove_child: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
497 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
498
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
499 virtual void adopt (const graphics_handle&)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
500 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
501 error ("base_graphics_object::adopt: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
502 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
503
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
504 virtual void reparent (const graphics_handle&)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
505 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
506 error ("base_graphics_object::reparent: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
507 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
508
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
509 virtual void defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
510 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
511 error ("base_graphics_object::default: invalid graphics object");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
512 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
513
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
514 virtual bool valid_object (void) const { return false; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
515
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
516 virtual std::string type (void) const { return "unknown"; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
517
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
518 bool isa (const std::string& go_name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
519 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
520 return type () == go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
521 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
522
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
523 protected:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
524 // A reference count.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
525 int count;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
526 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
527
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
528 class graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
529 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
530 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
531 graphics_object (void) : rep (new base_graphics_object ()) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
532
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
533 graphics_object (base_graphics_object *new_rep)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
534 : rep (new_rep) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
535
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
536 graphics_object (const graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
537 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
538 rep = obj.rep;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
539 rep->count++;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
540 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
541
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
542 graphics_object& operator = (const graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
543 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
544 if (rep != obj.rep)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
545 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
546 if (--rep->count == 0)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
547 delete rep;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
548
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
549 rep = obj.rep;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
550 rep->count++;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
551 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
552
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
553 return *this;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
554 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
555
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
556 ~graphics_object (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
557 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
558 if (--rep->count == 0)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
559 delete rep;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
560 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
561
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
562 void mark_modified (void) { rep->mark_modified (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
563
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
564 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
565 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
566 rep->override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
567 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
568
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
569 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
570 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
571 rep->set_from_list (plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
572 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
573
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
574 void set (const property_name& name, const octave_value& val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
575 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
576 rep->set (name, val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
577 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
578
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
579 void set (const octave_value_list& args);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
580
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
581 void set_defaults (const std::string& mode)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
582 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
583 rep->set_defaults (mode);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
584 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
585
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
586 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
587 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
588 return rep->get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
589 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
590
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
591 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
592 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
593 return name.compare ("default")
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
594 ? get_defaults ()
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
595 : (name.compare ("factory")
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
596 ? get_factory_defaults () : rep->get (name));
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
597 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
598
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
599 octave_value get_default (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
600 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
601 return rep->get_default (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
602 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
603
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
604 octave_value get_factory_default (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
605 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
606 return rep->get_factory_default (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
607 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
608
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
609 octave_value get_defaults (void) const { return rep->get_defaults (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
610
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
611 octave_value get_factory_defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
612 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
613 return rep->get_factory_defaults ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
614 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
615
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
616 graphics_handle get_parent (void) const { return rep->get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
617
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
618 void remove_child (const graphics_handle& h) { return rep->remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
619
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
620 void adopt (const graphics_handle& h) { return rep->adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
621
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
622 void reparent (const graphics_handle& h) { return rep->reparent (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
623
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
624 void defaults (void) const { rep->defaults (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
625
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
626 bool isa (const std::string& go_name) const { return rep->isa (go_name); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
627
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
628 bool valid_object (void) const { return rep->valid_object (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
629
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
630 operator bool (void) const { return rep->valid_object (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
631
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
632 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
633 base_graphics_object *rep;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
634 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
635
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
636 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
637
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
638 class gh_manager
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
639 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
640 protected:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
641
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
642 gh_manager (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
643
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
644 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
645
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
646 static bool instance_ok (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
647 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
648 bool retval = true;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
649
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
650 if (! instance)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
651 instance = new gh_manager ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
652
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
653 if (! instance)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
654 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
655 ::error ("unable to create gh_manager!");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
656
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
657 retval = false;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
658 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
659
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
660 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
661 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
662
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
663 static void free (const graphics_handle& h)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
664 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
665 if (instance_ok ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
666 instance->do_free (h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
667 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
668
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
669 static graphics_handle lookup (double val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
670 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
671 return instance_ok () ? instance->do_lookup (val) : graphics_handle ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
672 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
673
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
674 static graphics_object get_object (const graphics_handle& h)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
675 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
676 return instance_ok () ? instance->do_get_object (h) : graphics_object ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
677 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
678
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
679 static graphics_handle
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
680 make_graphics_handle (const std::string& go_name,
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
681 const graphics_handle& parent)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
682 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
683 return instance_ok ()
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
684 ? instance->do_make_graphics_handle (go_name, parent) : octave_NaN;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
685 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
686
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
687 static graphics_handle make_figure_handle (double val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
688 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
689 return instance_ok ()
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
690 ? instance->do_make_figure_handle (val) : octave_NaN;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
691 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
692
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
693 static void push_figure (const graphics_handle& h)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
694 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
695 if (instance_ok ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
696 instance->do_push_figure (h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
697 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
698
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
699 static void pop_figure (const graphics_handle& h)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
700 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
701 if (instance_ok ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
702 instance->do_pop_figure (h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
703 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
704
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
705 static graphics_handle current_figure (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
706 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
707 return instance_ok () ? instance->do_current_figure () : octave_NaN;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
708 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
709
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
710 static Matrix handle_list (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
711 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
712 return instance_ok () ? instance->do_handle_list () : Matrix ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
713 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
714
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
715 static Matrix figure_handle_list (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
716 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
717 return instance_ok () ? instance->do_figure_handle_list () : Matrix ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
718 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
719
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
720 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
721
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
722 static gh_manager *instance;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
723
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
724 typedef std::map<graphics_handle, graphics_object>::iterator iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
725 typedef std::map<graphics_handle, graphics_object>::const_iterator const_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
726
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
727 typedef std::set<graphics_handle>::iterator free_list_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
728 typedef std::set<graphics_handle>::const_iterator const_free_list_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
729
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
730 typedef std::list<graphics_handle>::iterator figure_list_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
731 typedef std::list<graphics_handle>::const_iterator const_figure_list_iterator;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
732
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
733 // A map of handles to graphics objects.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
734 std::map<graphics_handle, graphics_object> handle_map;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
735
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
736 // The available graphics handles.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
737 std::set<graphics_handle> handle_free_list;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
738
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
739 // The next handle available if handle_free_list is empty.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
740 graphics_handle next_handle;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
741
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
742 // The allocated figure handles. Top of the stack is most recently
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
743 // created.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
744 std::list<graphics_handle> figure_list;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
745
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
746 graphics_handle get_handle (const std::string& go_name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
747
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
748 void do_free (const graphics_handle& h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
749
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
750 graphics_handle do_lookup (double val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
751 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
752 iterator p = handle_map.find (val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
753
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
754 return (p != handle_map.end ()) ? p->first : octave_NaN;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
755 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
756
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
757 graphics_object do_get_object (const graphics_handle& h)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
758 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
759 iterator p = handle_map.find (h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
760
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
761 return (p != handle_map.end ()) ? p->second : graphics_object ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
762 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
763
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
764 graphics_handle do_make_graphics_handle (const std::string& go_name,
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
765 const graphics_handle& p);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
766
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
767 graphics_handle do_make_figure_handle (double val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
768
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
769 Matrix do_handle_list (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
770 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
771 Matrix retval (1, handle_map.size ());
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
772 octave_idx_type i = 0;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
773 for (const_iterator p = handle_map.begin (); p != handle_map.end (); p++)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
774 retval(i++) = p->first;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
775 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
776 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
777
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
778 Matrix do_figure_handle_list (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
779 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
780 Matrix retval (1, figure_list.size ());
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
781 octave_idx_type i = 0;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
782 for (const_figure_list_iterator p = figure_list.begin ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
783 p != figure_list.end ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
784 p++)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
785 retval(i++) = *p;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
786 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
787 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
788
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
789 void do_push_figure (const graphics_handle& h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
790
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
791 void do_pop_figure (const graphics_handle& h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
792
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
793 graphics_handle do_current_figure (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
794 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
795 return figure_list.empty () ? octave_NaN : figure_list.front ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
796 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
797 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
798
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
799
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
800 // This function is NOT equivalent to the scripting language function gcf.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
801 graphics_handle gcf (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
802
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
803 // This function is NOT equivalent to the scripting language function gca.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
804 graphics_handle gca (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
805
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
806 class base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
807 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
808 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
809 base_properties (const std::string& t = "unknown",
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
810 const graphics_handle& mh = octave_NaN,
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
811 const graphics_handle& p = octave_NaN)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
812 : type (t), __modified__ (true), __myhandle__ (mh), parent (p),
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
813 children () { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
814
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
815 virtual ~base_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
816
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
817 virtual std::string graphics_object_name (void) const = 0;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
818
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
819 void mark_modified (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
820 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
821 __modified__ = true;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
822 graphics_object parent_obj = gh_manager::get_object (parent);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
823 parent_obj.mark_modified ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
824 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
825
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
826 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
827 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
828 graphics_object parent_obj = gh_manager::get_object (parent);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
829 parent_obj.override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
830 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
831
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
832 // Look through DEFAULTS for properties with given CLASS_NAME, and
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
833 // apply them to the current object with set (virtual method).
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
834
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
835 void set_from_list (base_graphics_object& obj, property_list& defaults);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
836
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
837 virtual void set (const property_name& name, const octave_value& val) = 0;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
838
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
839 graphics_handle get_parent (void) const { return parent; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
840
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
841 void remove_child (const graphics_handle& h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
842
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
843 void adopt (const graphics_handle& h)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
844 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
845 octave_idx_type n = children.numel ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
846 children.resize (1, n+1);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
847 children(n) = h;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
848 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
849
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
850 void set_parent (const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
851
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
852 void reparent (const graphics_handle& new_parent) { parent = new_parent; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
853
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
854 virtual void delete_children (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
855 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
856 octave_idx_type n = children.numel ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
857
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
858 for (octave_idx_type i = 0; i < n; i++)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
859 gh_manager::free (children(i));
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
860 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
861
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
862 protected:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
863 std::string type;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
864 bool __modified__;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
865 graphics_handle __myhandle__;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
866 graphics_handle parent;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
867 Matrix children;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
868 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
869
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
870 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
871
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
872 class root_figure : public base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
873 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
874 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
875 class root_figure_properties : public base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
876 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
877 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
878 root_figure_properties (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
879 : base_properties ("root figure", 0, octave_NaN),
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
880 currentfigure (octave_NaN),
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
881 visible ("on")
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
882 { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
883
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
884 ~root_figure_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
885
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
886 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
887
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
888 octave_value get (void) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
889
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
890 octave_value get (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
891
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
892 std::string graphics_object_name (void) const { return go_name; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
893
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
894 private:
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
895 OCTAVE_GRAPHICS_PROPERTY (graphics_handle, currentfigure);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
896 OCTAVE_GRAPHICS_PROPERTY (octave_value, visible);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
897
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
898 static std::string go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
899 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
900
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
901 root_figure_properties properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
902
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
903 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
904
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
905 root_figure (void) : properties (), default_properties () { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
906
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
907 ~root_figure (void) { properties.delete_children (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
908
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
909 std::string type (void) const { return properties.graphics_object_name (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
910
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
911 void mark_modified (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
912
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
913 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
914 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
915 // Now override with our defaults. If the default_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
916 // list includes the properties for all defaults (line,
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
917 // surface, etc.) then we don't have to know the type of OBJ
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
918 // here, we just call its set function and let it decide which
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
919 // properties from the list to use.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
920 obj.set_from_list (default_properties);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
921 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
922
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
923 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
924 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
925 properties.set_from_list (*this, plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
926 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
927
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
928 void set (const property_name& name, const octave_value& value)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
929 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
930 if (name.compare ("default", 7))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
931 // strip "default", pass rest to function that will
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
932 // parse the remainder and add the element to the
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
933 // default_properties map.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
934 default_properties.set (name.substr (7), value);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
935 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
936 properties.set (name, value);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
937 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
938
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
939 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
940 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
941 return properties.get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
942 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
943
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
944 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
945 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
946 octave_value retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
947
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
948 if (name.compare ("default", 7))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
949 return get_default (name.substr (7));
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
950 else if (name.compare ("factory", 7))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
951 return get_factory_default (name.substr (7));
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
952 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
953 retval = properties.get (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
954
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
955 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
956 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
957
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
958 octave_value get_default (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
959 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
960 octave_value retval = default_properties.lookup (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
961
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
962 if (retval.is_undefined ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
963 error ("get: invalid default property `%s'", name.c_str ());
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
964
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
965 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
966 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
967
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
968 octave_value get_factory_default (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
969 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
970 octave_value retval = factory_properties.lookup (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
971
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
972 if (retval.is_undefined ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
973 error ("get: invalid factory default property `%s'", name.c_str ());
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
974
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
975 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
976 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
977
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
978 octave_value get_defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
979 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
980 return default_properties.as_struct ("default");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
981 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
982
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
983 octave_value get_factory_defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
984 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
985 return factory_properties.as_struct ("factory");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
986 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
987
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
988 graphics_handle get_parent (void) const { return properties.get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
989
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
990 void remove_child (const graphics_handle& h) { properties.remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
991
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
992 void adopt (const graphics_handle& h) { properties.adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
993
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
994 void reparent (const graphics_handle& np) { properties.reparent (np); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
995
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
996 bool valid_object (void) const { return true; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
997
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
998 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
999 property_list default_properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1000
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1001 static property_list factory_properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1002
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1003 static property_list::plist_map_type init_factory_properties (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1004 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1005
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1006 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1007
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1008 class figure : public base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1009 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1010 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1011 class figure_properties : public base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1012 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1013 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1014 figure_properties (const graphics_handle& mh, const graphics_handle& p);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1015
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1016 ~figure_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1017
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1018 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1019
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1020 octave_value get (void) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1021
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1022 octave_value get (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1023
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1024 void close (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1025
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1026 std::string graphics_object_name (void) const { return go_name; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1027
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1028 static property_list::pval_map_type factory_defaults (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1029
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1030 private:
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1031 OCTAVE_GRAPHICS_PROPERTY (octave_value, __plot_stream__);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1032 OCTAVE_GRAPHICS_PROPERTY (octave_value, nextplot);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1033 OCTAVE_GRAPHICS_PROPERTY (octave_value, closerequestfcn);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1034 OCTAVE_GRAPHICS_PROPERTY (graphics_handle, currentaxes);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1035 OCTAVE_GRAPHICS_PROPERTY (colormap_property, colormap);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1036 OCTAVE_GRAPHICS_PROPERTY (octave_value, visible);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1037 OCTAVE_GRAPHICS_PROPERTY (octave_value, paperorientation);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1038
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1039 static std::string go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1040 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1041
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1042 figure_properties properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1043
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1044 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1045 figure (const graphics_handle& mh, const graphics_handle& p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1046 : base_graphics_object (), properties (mh, p), default_properties ()
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1047 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1048 properties.override_defaults (*this);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1049 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1050
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1051 ~figure (void)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1052 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1053 properties.delete_children ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1054 properties.close ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1055 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1056
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1057 std::string type (void) const { return properties.graphics_object_name (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1058
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1059 void mark_modified (void) { properties.mark_modified (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1060
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1061 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1062 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1063 // Allow parent (root figure) to override first (properties knows how
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1064 // to find the parent object).
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1065 properties.override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1066
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1067 // Now override with our defaults. If the default_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1068 // list includes the properties for all defaults (line,
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1069 // surface, etc.) then we don't have to know the type of OBJ
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1070 // here, we just call its set function and let it decide which
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1071 // properties from the list to use.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1072 obj.set_from_list (default_properties);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1073 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1074
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1075 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1076 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1077 properties.set_from_list (*this, plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1078 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1079
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1080 void set (const property_name& name, const octave_value& value)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1081 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1082 if (name.compare ("default", 7))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1083 // strip "default", pass rest to function that will
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1084 // parse the remainder and add the element to the
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1085 // default_properties map.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1086 default_properties.set (name.substr (7), value);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1087 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1088 properties.set (name, value);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1089 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1090
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1091 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1092 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1093 return properties.get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1094 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1095
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1096 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1097 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1098 octave_value retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1099
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1100 if (name.compare ("default", 7))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1101 retval = get_default (name.substr (7));
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1102 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1103 retval = properties.get (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1104
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1105 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1106 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1107
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1108 octave_value get_default (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1109 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1110 octave_value retval = default_properties.lookup (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1111
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1112 if (retval.is_undefined ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1113 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1114 graphics_handle parent = get_parent ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1115 graphics_object parent_obj = gh_manager::get_object (parent);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1116
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1117 retval = parent_obj.get_default (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1118 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1119
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1120 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1121 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1122
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1123 octave_value get_defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1124 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1125 return default_properties.as_struct ("default");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1126 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1127
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1128 graphics_handle get_parent (void) const { return properties.get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1129
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1130 void remove_child (const graphics_handle& h) { properties.remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1131
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1132 void adopt (const graphics_handle& h) { properties.adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1133
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1134 void reparent (const graphics_handle& np) { properties.reparent (np); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1135
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1136 bool valid_object (void) const { return true; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1137
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1138 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1139 property_list default_properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1140 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1141
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1142 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1143
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1144 class axes : public base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1145 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1146 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1147 class axes_properties : public base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1148 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1149 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1150 axes_properties (const graphics_handle& mh, const graphics_handle& p);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1151
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1152 ~axes_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1153
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1154 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1155
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1156 void set_defaults (base_graphics_object& obj, const std::string& mode);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1157
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1158 octave_value get (void) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1159
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1160 octave_value get (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1161
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1162 void remove_child (const graphics_handle& h);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1163
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1164 void delete_children (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1165
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1166 std::string graphics_object_name (void) const { return go_name; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1167
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1168 static property_list::pval_map_type factory_defaults (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1169
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1170 private:
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1171 OCTAVE_GRAPHICS_PROPERTY (octave_value, position);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1172 OCTAVE_GRAPHICS_MUTABLE_PROPERTY (graphics_handle, title);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1173 OCTAVE_GRAPHICS_PROPERTY (octave_value, box);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1174 OCTAVE_GRAPHICS_PROPERTY (octave_value, key);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1175 OCTAVE_GRAPHICS_PROPERTY (octave_value, keybox);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1176 OCTAVE_GRAPHICS_PROPERTY (octave_value, keypos);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1177 OCTAVE_GRAPHICS_PROPERTY (octave_value, dataaspectratio);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1178 OCTAVE_GRAPHICS_PROPERTY (octave_value, dataaspectratiomode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1179 OCTAVE_GRAPHICS_PROPERTY (octave_value, xlim);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1180 OCTAVE_GRAPHICS_PROPERTY (octave_value, ylim);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1181 OCTAVE_GRAPHICS_PROPERTY (octave_value, zlim);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1182 OCTAVE_GRAPHICS_PROPERTY (octave_value, xlimmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1183 OCTAVE_GRAPHICS_PROPERTY (octave_value, ylimmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1184 OCTAVE_GRAPHICS_PROPERTY (octave_value, zlimmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1185 OCTAVE_GRAPHICS_MUTABLE_PROPERTY (graphics_handle, xlabel);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1186 OCTAVE_GRAPHICS_MUTABLE_PROPERTY (graphics_handle, ylabel);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1187 OCTAVE_GRAPHICS_MUTABLE_PROPERTY (graphics_handle, zlabel);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1188 OCTAVE_GRAPHICS_PROPERTY (octave_value, xgrid);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1189 OCTAVE_GRAPHICS_PROPERTY (octave_value, ygrid);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1190 OCTAVE_GRAPHICS_PROPERTY (octave_value, zgrid);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1191 OCTAVE_GRAPHICS_PROPERTY (octave_value, xminorgrid);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1192 OCTAVE_GRAPHICS_PROPERTY (octave_value, yminorgrid);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1193 OCTAVE_GRAPHICS_PROPERTY (octave_value, zminorgrid);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1194 OCTAVE_GRAPHICS_PROPERTY (octave_value, xtick);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1195 OCTAVE_GRAPHICS_PROPERTY (octave_value, ytick);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1196 OCTAVE_GRAPHICS_PROPERTY (octave_value, ztick);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1197 OCTAVE_GRAPHICS_PROPERTY (octave_value, xtickmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1198 OCTAVE_GRAPHICS_PROPERTY (octave_value, ytickmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1199 OCTAVE_GRAPHICS_PROPERTY (octave_value, ztickmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1200 OCTAVE_GRAPHICS_PROPERTY (octave_value, xticklabel);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1201 OCTAVE_GRAPHICS_PROPERTY (octave_value, yticklabel);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1202 OCTAVE_GRAPHICS_PROPERTY (octave_value, zticklabel);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1203 OCTAVE_GRAPHICS_PROPERTY (octave_value, xticklabelmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1204 OCTAVE_GRAPHICS_PROPERTY (octave_value, yticklabelmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1205 OCTAVE_GRAPHICS_PROPERTY (octave_value, zticklabelmode);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1206 OCTAVE_GRAPHICS_PROPERTY (octave_value, xscale);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1207 OCTAVE_GRAPHICS_PROPERTY (octave_value, yscale);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1208 OCTAVE_GRAPHICS_PROPERTY (octave_value, zscale);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1209 OCTAVE_GRAPHICS_PROPERTY (octave_value, xdir);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1210 OCTAVE_GRAPHICS_PROPERTY (octave_value, ydir);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1211 OCTAVE_GRAPHICS_PROPERTY (octave_value, zdir);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1212 OCTAVE_GRAPHICS_PROPERTY (octave_value, view);
6765
e6b528a3a2a9 [project @ 2007-06-28 15:25:43 by jwe]
jwe
parents: 6761
diff changeset
1213 OCTAVE_GRAPHICS_PROPERTY (octave_value, visible);
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1214 OCTAVE_GRAPHICS_PROPERTY (octave_value, nextplot);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1215 OCTAVE_GRAPHICS_PROPERTY (octave_value, outerposition);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1216
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1217 static std::string go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1218 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1219
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1220 axes_properties properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1221
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1222 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1223 axes (const graphics_handle& mh, const graphics_handle& p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1224 : base_graphics_object (), properties (mh, p), default_properties ()
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1225 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1226 properties.override_defaults (*this);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1227 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1228
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1229 ~axes (void) { properties.delete_children (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1230
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1231 std::string type (void) const { return properties.graphics_object_name (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1232
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1233 void mark_modified (void) { properties.mark_modified (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1234
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1235 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1236 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1237 // Allow parent (figure) to override first (properties knows how
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1238 // to find the parent object).
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1239 properties.override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1240
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1241 // Now override with our defaults. If the default_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1242 // list includes the properties for all defaults (line,
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1243 // surface, etc.) then we don't have to know the type of OBJ
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1244 // here, we just call its set function and let it decide which
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1245 // properties from the list to use.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1246 obj.set_from_list (default_properties);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1247 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1248
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1249 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1250 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1251 properties.set_from_list (*this, plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1252 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1253
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1254 void set (const property_name& name, const octave_value& value)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1255 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1256 if (name.compare ("default", 7))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1257 // strip "default", pass rest to function that will
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1258 // parse the remainder and add the element to the
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1259 // default_properties map.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1260 default_properties.set (name.substr (7), value);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1261 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1262 properties.set (name, value);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1263 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1264
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1265 void set_defaults (const std::string& mode)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1266 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1267 properties.set_defaults (*this, mode);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1268 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1269
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1270 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1271 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1272 return properties.get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1273 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1274
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1275 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1276 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1277 octave_value retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1278
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1279 // FIXME -- finish this.
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1280 if (name.compare ("default", 7))
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1281 retval = get_default (name.substr (7));
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1282 else
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1283 retval = properties.get (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1284
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1285 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1286 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1287
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1288 octave_value get_default (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1289 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1290 octave_value retval = default_properties.lookup (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1291
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1292 if (retval.is_undefined ())
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1293 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1294 graphics_handle parent = get_parent ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1295 graphics_object parent_obj = gh_manager::get_object (parent);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1296
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1297 retval = parent_obj.get_default (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1298 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1299
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1300 return retval;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1301 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1302
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1303 octave_value get_defaults (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1304 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1305 return default_properties.as_struct ("default");
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1306 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1307
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1308 graphics_handle get_parent (void) const { return properties.get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1309
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1310 void remove_child (const graphics_handle& h) { properties.remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1311
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1312 void adopt (const graphics_handle& h) { properties.adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1313
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1314 void reparent (const graphics_handle& np) { properties.reparent (np); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1315
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1316 bool valid_object (void) const { return true; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1317
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1318 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1319 property_list default_properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1320 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1321
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1322 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1323
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1324 class line : public base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1325 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1326 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1327 class line_properties : public base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1328 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1329 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1330 line_properties (const graphics_handle& mh, const graphics_handle& p);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1331
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1332 ~line_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1333
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1334 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1335
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1336 octave_value get (void) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1337
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1338 octave_value get (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1339
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1340 std::string graphics_object_name (void) const { return go_name; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1341
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1342 static property_list::pval_map_type factory_defaults (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1343
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1344 private:
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1345 OCTAVE_GRAPHICS_PROPERTY (octave_value, xdata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1346 OCTAVE_GRAPHICS_PROPERTY (octave_value, ydata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1347 OCTAVE_GRAPHICS_PROPERTY (octave_value, zdata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1348 OCTAVE_GRAPHICS_PROPERTY (octave_value, ldata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1349 OCTAVE_GRAPHICS_PROPERTY (octave_value, udata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1350 OCTAVE_GRAPHICS_PROPERTY (octave_value, xldata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1351 OCTAVE_GRAPHICS_PROPERTY (octave_value, xudata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1352 OCTAVE_GRAPHICS_PROPERTY (color_property, color);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1353 OCTAVE_GRAPHICS_PROPERTY (octave_value, linestyle);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1354 OCTAVE_GRAPHICS_PROPERTY (octave_value, linewidth);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1355 OCTAVE_GRAPHICS_PROPERTY (octave_value, marker);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1356 OCTAVE_GRAPHICS_PROPERTY (octave_value, markeredgecolor);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1357 OCTAVE_GRAPHICS_PROPERTY (octave_value, markerfacecolor);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1358 OCTAVE_GRAPHICS_PROPERTY (octave_value, markersize);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1359 OCTAVE_GRAPHICS_PROPERTY (octave_value, keylabel);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1360
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1361 static std::string go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1362 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1363
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1364 line_properties properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1365
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1366 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1367 line (const graphics_handle& mh, const graphics_handle& p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1368 : base_graphics_object (), properties (mh, p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1369 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1370 properties.override_defaults (*this);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1371 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1372
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1373 ~line (void) { properties.delete_children (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1374
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1375 std::string type (void) const { return properties.graphics_object_name (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1376
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1377 void mark_modified (void) { properties.mark_modified (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1378
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1379 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1380 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1381 // Allow parent (figure) to override first (properties knows how
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1382 // to find the parent object).
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1383 properties.override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1384 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1385
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1386 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1387 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1388 properties.set_from_list (*this, plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1389 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1390
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1391 void set (const property_name& name, const octave_value& val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1392 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1393 properties.set (name, val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1394 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1395
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1396 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1397 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1398 return properties.get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1399 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1400
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1401 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1402 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1403 return properties.get (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1404 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1405
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1406 graphics_handle get_parent (void) const { return properties.get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1407
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1408 void remove_child (const graphics_handle& h) { properties.remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1409
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1410 void adopt (const graphics_handle& h) { properties.adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1411
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1412 void reparent (const graphics_handle& h) { properties.reparent (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1413
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1414 bool valid_object (void) const { return true; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1415 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1416
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1417 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1418
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1419 class text : public base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1420 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1421 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1422 class text_properties : public base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1423 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1424 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1425 text_properties (const graphics_handle& mh, const graphics_handle& p);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1426
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1427 ~text_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1428
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1429 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1430
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1431 octave_value get (void) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1432
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1433 octave_value get (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1434
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1435 std::string graphics_object_name (void) const { return go_name; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1436
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1437 static property_list::pval_map_type factory_defaults (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1438
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1439 private:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1440 octave_value string;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1441 octave_value units;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1442 octave_value position;
6724
388747e3d96b [project @ 2007-06-14 17:04:52 by jwe]
jwe
parents: 6705
diff changeset
1443 octave_value rotation;
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1444 octave_value horizontalalignment;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1445
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1446 static std::string go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1447 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1448
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1449 text_properties properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1450
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1451 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1452 text (const graphics_handle& mh, const graphics_handle& p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1453 : base_graphics_object (), properties (mh, p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1454 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1455 properties.override_defaults (*this);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1456 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1457
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1458 ~text (void) { properties.delete_children (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1459
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1460 std::string type (void) const { return properties.graphics_object_name (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1461
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1462 void mark_modified (void) { properties.mark_modified (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1463
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1464 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1465 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1466 // Allow parent (figure) to override first (properties knows how
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1467 // to find the parent object).
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1468 properties.override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1469 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1470
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1471 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1472 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1473 properties.set_from_list (*this, plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1474 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1475
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1476 void set (const property_name& name, const octave_value& val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1477 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1478 properties.set (name, val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1479 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1480
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1481 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1482 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1483 return properties.get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1484 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1485
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1486 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1487 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1488 return properties.get (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1489 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1490
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1491 graphics_handle get_parent (void) const { return properties.get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1492
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1493 void remove_child (const graphics_handle& h) { properties.remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1494
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1495 void adopt (const graphics_handle& h) { properties.adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1496
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1497 void reparent (const graphics_handle& h) { properties.reparent (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1498
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1499 bool valid_object (void) const { return true; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1500 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1501
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1502 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1503
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1504 class image : public base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1505 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1506 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1507 class image_properties : public base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1508 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1509 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1510 image_properties (const graphics_handle& mh, const graphics_handle& p);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1511
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1512 ~image_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1513
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1514 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1515
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1516 octave_value get (void) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1517
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1518 octave_value get (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1519
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1520 std::string graphics_object_name (void) const { return go_name; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1521
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1522 static property_list::pval_map_type factory_defaults (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1523
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1524 private:
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1525 OCTAVE_GRAPHICS_PROPERTY (octave_value, cdata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1526 OCTAVE_GRAPHICS_PROPERTY (octave_value, xdata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1527 OCTAVE_GRAPHICS_PROPERTY (octave_value, ydata);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1528
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1529 static std::string go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1530 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1531
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1532 image_properties properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1533
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1534 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1535 image (const graphics_handle& mh, const graphics_handle& p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1536 : base_graphics_object (), properties (mh, p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1537 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1538 properties.override_defaults (*this);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1539 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1540
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1541 ~image (void) { properties.delete_children (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1542
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1543 std::string type (void) const { return properties.graphics_object_name (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1544
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1545 void mark_modified (void) { properties.mark_modified (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1546
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1547 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1548 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1549 // Allow parent (figure) to override first (properties knows how
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1550 // to find the parent object).
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1551 properties.override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1552 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1553
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1554 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1555 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1556 properties.set_from_list (*this, plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1557 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1558
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1559 void set (const property_name& name, const octave_value& val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1560 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1561 properties.set (name, val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1562 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1563
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1564 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1565 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1566 return properties.get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1567 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1568
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1569 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1570 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1571 return properties.get (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1572 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1573
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1574 graphics_handle get_parent (void) const { return properties.get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1575
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1576 void remove_child (const graphics_handle& h) { properties.remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1577
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1578 void adopt (const graphics_handle& h) { properties.adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1579
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1580 void reparent (const graphics_handle& h) { properties.reparent (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1581
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1582 bool valid_object (void) const { return true; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1583 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1584
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1585 // ---------------------------------------------------------------------
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1586
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1587 class surface : public base_graphics_object
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1588 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1589 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1590 class surface_properties : public base_properties
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1591 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1592 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1593 surface_properties (const graphics_handle& mh, const graphics_handle& p);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1594
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1595 ~surface_properties (void) { }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1596
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1597 void set (const property_name& name, const octave_value& val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1598
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1599 octave_value get (void) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1600
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1601 octave_value get (const property_name& name) const;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1602
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1603 std::string graphics_object_name (void) const { return go_name; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1604
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1605 static property_list::pval_map_type factory_defaults (void);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1606
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1607 private:
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1608 OCTAVE_GRAPHICS_PROPERTY (octave_value, xdata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1609 OCTAVE_GRAPHICS_PROPERTY (octave_value, ydata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1610 OCTAVE_GRAPHICS_PROPERTY (octave_value, zdata);
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1611 OCTAVE_GRAPHICS_PROPERTY (octave_value, keylabel);
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1612
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1613 static std::string go_name;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1614 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1615
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1616 surface_properties properties;
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1617
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1618 public:
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1619 surface (const graphics_handle& mh, const graphics_handle& p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1620 : base_graphics_object (), properties (mh, p)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1621 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1622 properties.override_defaults (*this);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1623 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1624
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1625 ~surface (void) { properties.delete_children (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1626
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1627 std::string type (void) const { return properties.graphics_object_name (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1628
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1629 void mark_modified (void) { properties.mark_modified (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1630
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1631 void override_defaults (base_graphics_object& obj)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1632 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1633 // Allow parent (figure) to override first (properties knows how
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1634 // to find the parent object).
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1635 properties.override_defaults (obj);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1636 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1637
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1638 void set_from_list (property_list& plist)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1639 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1640 properties.set_from_list (*this, plist);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1641 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1642
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1643 void set (const property_name& name, const octave_value& val)
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1644 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1645 properties.set (name, val);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1646 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1647
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1648 octave_value get (void) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1649 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1650 return properties.get ();
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1651 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1652
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1653 octave_value get (const property_name& name) const
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1654 {
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1655 return properties.get (name);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1656 }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1657
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1658 graphics_handle get_parent (void) const { return properties.get_parent (); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1659
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1660 void remove_child (const graphics_handle& h) { properties.remove_child (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1661
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1662 void adopt (const graphics_handle& h) { properties.adopt (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1663
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1664 void reparent (const graphics_handle& h) { properties.reparent (h); }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1665
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1666 bool valid_object (void) const { return true; }
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1667 };
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1668
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1669 octave_value
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1670 get_property_from_handle (double handle, const std::string &property,
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1671 const std::string &func);
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1672 bool
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
1673 set_property_in_handle (double handle, const std::string &property,
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1674 const octave_value &arg, const std::string &func);
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
1675
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1676
6734
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1677 #undef OCTAVE_GRAPHICS_PROPERTY_INTERNAL
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1678 #undef OCTAVE_GRAPHICS_PROPERTY
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1679 #undef OCTAVE_GRAPHICS_MUTABLE_PROPERTY
dd451e0a476c [project @ 2007-06-15 18:40:56 by jwe]
jwe
parents: 6724
diff changeset
1680
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
1681 #endif
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
1682
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
1683 /*
6705
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1684 ;;; Local Variables: ***
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1685 ;;; mode: C++ ***
0ee6bda23b87 [project @ 2007-06-13 05:42:24 by jwe]
jwe
parents: 6595
diff changeset
1686 ;;; End: ***
6595
55586d763de1 [project @ 2007-04-27 15:31:10 by dbateman]
dbateman
parents:
diff changeset
1687 */