Mercurial > octave-nkf
comparison libinterp/interpfcn/graphics.cc @ 15760:1ac3c906990a
graphics.cc (graphics_object::set (const octave_map& m)): set structure
property/value in the order in which they were originally stored. Add test.
author | Pantxo Diribarne <pantxo.diribarne@gmail.com> |
---|---|
date | Sun, 09 Dec 2012 13:01:53 -0500 |
parents | d803cd07f31a |
children | 2338a92e9782 |
comparison
equal
deleted
inserted
replaced
15759:b0ad083e1958 | 15760:1ac3c906990a |
---|---|
2043 | 2043 |
2044 // Set properties given in a struct array | 2044 // Set properties given in a struct array |
2045 void | 2045 void |
2046 graphics_object::set (const octave_map& m) | 2046 graphics_object::set (const octave_map& m) |
2047 { | 2047 { |
2048 for (octave_map::const_iterator p = m.begin (); | 2048 for (octave_idx_type p = 0; p < m.nfields (); p++) |
2049 p != m.end (); p++) | 2049 { |
2050 { | 2050 caseless_str name = m.keys ()[p]; |
2051 caseless_str name = m.key (p); | 2051 |
2052 | 2052 octave_value val = octave_value (m.contents (name).elem (m.numel () - 1)); |
2053 octave_value val = octave_value (m.contents (p).elem (m.numel () - 1)); | 2053 |
2054 | |
2055 set_value_or_default (name, val); | 2054 set_value_or_default (name, val); |
2056 | 2055 |
2057 if (error_state) | 2056 if (error_state) |
2058 break; | 2057 break; |
2059 } | 2058 } |
2068 %! assert (get (h, "linewidth"), 10); | 2067 %! assert (get (h, "linewidth"), 10); |
2069 %! assert (get (h, "marker"), "x"); | 2068 %! assert (get (h, "marker"), "x"); |
2070 %! h = plot (1:10, 10:-1:1, 1:10, 1:10); | 2069 %! h = plot (1:10, 10:-1:1, 1:10, 1:10); |
2071 %! set (h, struct ("linewidth", {5, 10})); | 2070 %! set (h, struct ("linewidth", {5, 10})); |
2072 %! assert (get (h, "linewidth"), {10; 10}); | 2071 %! assert (get (h, "linewidth"), {10; 10}); |
2072 ## test ordering | |
2073 %!test | |
2074 %! markchanged = @(h, foobar, name) set (h, "userdata", [get(h,"userdata"); {name}]); | |
2075 %! figure (1, "visible", "off") | |
2076 %! clf () | |
2077 %! h = line (); | |
2078 %! set (h, "userdata", {}) | |
2079 %! addlistener (h, "color", {markchanged, "color"}) | |
2080 %! addlistener (h, "linewidth", {markchanged, "linewidth"}) | |
2081 %! # "linewidth" first | |
2082 %! props.linewidth = 2; | |
2083 %! props.color = "r"; | |
2084 %! set (h, props); | |
2085 %! assert (get (h, "userdata"), fieldnames (props)) | |
2086 %! clear props | |
2087 %! clf () | |
2088 %! h = line (); | |
2089 %! set (h, "userdata", {}) | |
2090 %! addlistener (h, "color", {markchanged, "color"}) | |
2091 %! addlistener (h, "linewidth", {markchanged, "linewidth"}) | |
2092 %! # "color" first | |
2093 %! props.color = "r"; | |
2094 %! props.linewidth = 2; | |
2095 %! set (h, props); | |
2096 %! assert (get (h, "userdata"), fieldnames (props)) | |
2097 %! close (1) | |
2073 */ | 2098 */ |
2074 | 2099 |
2075 // Set a property to a value or to its (factory) default value. | 2100 // Set a property to a value or to its (factory) default value. |
2076 | 2101 |
2077 void | 2102 void |