Mercurial > octave-nkf
comparison src/graphics.cc @ 7189:e8d953d03f6a
[project @ 2007-11-26 20:42:09 by dbateman]
author | dbateman |
---|---|
date | Mon, 26 Nov 2007 20:42:11 +0000 |
parents | 6525eb2fba0f |
children | a927a2871a93 |
comparison
equal
deleted
inserted
replaced
7188:fdd7cd70dc14 | 7189:e8d953d03f6a |
---|---|
217 return *this; | 217 return *this; |
218 } | 218 } |
219 | 219 |
220 | 220 |
221 void | 221 void |
222 property_list::set (const property_name& name, const octave_value& val) | 222 property_list::set (const caseless_str& name, const octave_value& val) |
223 { | 223 { |
224 size_t offset = 0; | 224 size_t offset = 0; |
225 | 225 |
226 size_t len = name.length (); | 226 size_t len = name.length (); |
227 | 227 |
228 if (len > 4) | 228 if (len > 4) |
229 { | 229 { |
230 property_name pfx = name.substr (0, 4); | 230 caseless_str pfx = name.substr (0, 4); |
231 | 231 |
232 if (pfx.compare ("axes") || pfx.compare ("line") | 232 if (pfx.compare ("axes") || pfx.compare ("line") |
233 || pfx.compare ("text")) | 233 || pfx.compare ("text")) |
234 offset = 4; | 234 offset = 4; |
235 else if (len > 5) | 235 else if (len > 5) |
264 std::transform (pname.begin (), pname.end (), pname.begin (), tolower); | 264 std::transform (pname.begin (), pname.end (), pname.begin (), tolower); |
265 | 265 |
266 bool remove = false; | 266 bool remove = false; |
267 if (val.is_string ()) | 267 if (val.is_string ()) |
268 { | 268 { |
269 property_name tval = val.string_value (); | 269 caseless_str tval = val.string_value (); |
270 | 270 |
271 remove = tval.compare ("remove"); | 271 remove = tval.compare ("remove"); |
272 } | 272 } |
273 | 273 |
274 pval_map_type& pval_map = plist_map[pfx]; | 274 pval_map_type& pval_map = plist_map[pfx]; |
288 if (offset == 0) | 288 if (offset == 0) |
289 error ("invalid default property specification"); | 289 error ("invalid default property specification"); |
290 } | 290 } |
291 | 291 |
292 octave_value | 292 octave_value |
293 property_list::lookup (const property_name& name) const | 293 property_list::lookup (const caseless_str& name) const |
294 { | 294 { |
295 octave_value retval; | 295 octave_value retval; |
296 | 296 |
297 size_t offset = 0; | 297 size_t offset = 0; |
298 | 298 |
299 size_t len = name.length (); | 299 size_t len = name.length (); |
300 | 300 |
301 if (len > 4) | 301 if (len > 4) |
302 { | 302 { |
303 property_name pfx = name.substr (0, 4); | 303 caseless_str pfx = name.substr (0, 4); |
304 | 304 |
305 if (pfx.compare ("axes") || pfx.compare ("line") | 305 if (pfx.compare ("axes") || pfx.compare ("line") |
306 || pfx.compare ("text")) | 306 || pfx.compare ("text")) |
307 offset = 4; | 307 offset = 4; |
308 else if (len > 5) | 308 else if (len > 5) |
396 rep->defaults (); | 396 rep->defaults (); |
397 else if (nargin % 2 == 0) | 397 else if (nargin % 2 == 0) |
398 { | 398 { |
399 for (int i = 0; i < nargin; i += 2) | 399 for (int i = 0; i < nargin; i += 2) |
400 { | 400 { |
401 property_name name = args(i).string_value (); | 401 caseless_str name = args(i).string_value (); |
402 | 402 |
403 if (! error_state) | 403 if (! error_state) |
404 { | 404 { |
405 octave_value val = args(i+1); | 405 octave_value val = args(i+1); |
406 | 406 |
407 if (val.is_string ()) | 407 if (val.is_string ()) |
408 { | 408 { |
409 property_name tval = val.string_value (); | 409 caseless_str tval = val.string_value (); |
410 | 410 |
411 if (tval.compare ("default")) | 411 if (tval.compare ("default")) |
412 val = get_default (name); | 412 val = get_default (name); |
413 else if (tval.compare ("factory")) | 413 else if (tval.compare ("factory")) |
414 val = get_factory_default (name); | 414 val = get_factory_default (name); |
483 } | 483 } |
484 | 484 |
485 gh_manager *gh_manager::instance = 0; | 485 gh_manager *gh_manager::instance = 0; |
486 | 486 |
487 static void | 487 static void |
488 xset (const graphics_handle& h, const property_name& name, | 488 xset (const graphics_handle& h, const caseless_str& name, |
489 const octave_value& val) | 489 const octave_value& val) |
490 { | 490 { |
491 graphics_object obj = gh_manager::get_object (h); | 491 graphics_object obj = gh_manager::get_object (h); |
492 obj.set (name, val); | 492 obj.set (name, val); |
493 } | 493 } |
502 } | 502 } |
503 } | 503 } |
504 | 504 |
505 | 505 |
506 static octave_value | 506 static octave_value |
507 xget (const graphics_handle& h, const property_name& name) | 507 xget (const graphics_handle& h, const caseless_str& name) |
508 { | 508 { |
509 graphics_object obj = gh_manager::get_object (h); | 509 graphics_object obj = gh_manager::get_object (h); |
510 return obj.get (name); | 510 return obj.get (name); |
511 } | 511 } |
512 | 512 |
782 else | 782 else |
783 gripe_set_invalid ("currentfigure"); | 783 gripe_set_invalid ("currentfigure"); |
784 } | 784 } |
785 | 785 |
786 void | 786 void |
787 root_figure::properties::set (const property_name& name, | 787 root_figure::properties::set (const caseless_str& name, |
788 const octave_value& val) | 788 const octave_value& val) |
789 { | 789 { |
790 if (name.compare ("tag")) | 790 if (name.compare ("tag")) |
791 set_tag (val); | 791 set_tag (val); |
792 else if (name.compare ("currentfigure")) | 792 else if (name.compare ("currentfigure")) |
811 | 811 |
812 return m; | 812 return m; |
813 } | 813 } |
814 | 814 |
815 octave_value | 815 octave_value |
816 root_figure::properties::get (const property_name& name) const | 816 root_figure::properties::get (const caseless_str& name) const |
817 { | 817 { |
818 octave_value retval; | 818 octave_value retval; |
819 | 819 |
820 if (name.compare ("tag")) | 820 if (name.compare ("tag")) |
821 retval = type; | 821 retval = type; |
842 | 842 |
843 figure::properties::properties (const graphics_handle& mh, | 843 figure::properties::properties (const graphics_handle& mh, |
844 const graphics_handle& p) | 844 const graphics_handle& p) |
845 : base_properties (go_name, mh, p), | 845 : base_properties (go_name, mh, p), |
846 __plot_stream__ (Matrix ()), | 846 __plot_stream__ (Matrix ()), |
847 __enhanced__ (false), | |
847 nextplot ("replace"), | 848 nextplot ("replace"), |
848 closerequestfcn (make_fcn_handle ("closereq")), | 849 closerequestfcn (make_fcn_handle ("closereq")), |
849 currentaxes (octave_NaN), | 850 currentaxes (octave_NaN), |
850 colormap (), | 851 colormap (), |
851 visible ("on"), | 852 visible ("on"), |
877 visible = val; | 878 visible = val; |
878 } | 879 } |
879 } | 880 } |
880 | 881 |
881 void | 882 void |
882 figure::properties::set (const property_name& name, const octave_value& val) | 883 figure::properties::set (const caseless_str& name, const octave_value& val) |
883 { | 884 { |
884 bool modified = true; | 885 bool modified = true; |
885 | 886 |
886 if (name.compare ("tag")) | 887 if (name.compare ("tag")) |
887 set_tag (val); | 888 set_tag (val); |
892 __modified__ = val.bool_value (); | 893 __modified__ = val.bool_value (); |
893 modified = false; | 894 modified = false; |
894 } | 895 } |
895 else if (name.compare ("__plot_stream__")) | 896 else if (name.compare ("__plot_stream__")) |
896 set___plot_stream__ (val); | 897 set___plot_stream__ (val); |
898 else if (name.compare ("__enhanced__")) | |
899 set___enhanced__ (val); | |
897 else if (name.compare ("nextplot")) | 900 else if (name.compare ("nextplot")) |
898 set_nextplot (val); | 901 set_nextplot (val); |
899 else if (name.compare ("closerequestfcn")) | 902 else if (name.compare ("closerequestfcn")) |
900 set_closerequestfcn (val); | 903 set_closerequestfcn (val); |
901 else if (name.compare ("currentaxes")) | 904 else if (name.compare ("currentaxes")) |
925 m.assign ("type", type); | 928 m.assign ("type", type); |
926 m.assign ("parent", parent.as_octave_value ()); | 929 m.assign ("parent", parent.as_octave_value ()); |
927 m.assign ("children", children); | 930 m.assign ("children", children); |
928 m.assign ("__modified__", __modified__); | 931 m.assign ("__modified__", __modified__); |
929 m.assign ("__plot_stream__", __plot_stream__); | 932 m.assign ("__plot_stream__", __plot_stream__); |
933 m.assign ("__enhanced__", __enhanced__); | |
930 m.assign ("nextplot", nextplot); | 934 m.assign ("nextplot", nextplot); |
931 m.assign ("closerequestfcn", closerequestfcn); | 935 m.assign ("closerequestfcn", closerequestfcn); |
932 m.assign ("currentaxes", currentaxes.as_octave_value ()); | 936 m.assign ("currentaxes", currentaxes.as_octave_value ()); |
933 m.assign ("colormap", colormap); | 937 m.assign ("colormap", colormap); |
934 m.assign ("visible", visible); | 938 m.assign ("visible", visible); |
936 | 940 |
937 return m; | 941 return m; |
938 } | 942 } |
939 | 943 |
940 octave_value | 944 octave_value |
941 figure::properties::get (const property_name& name) const | 945 figure::properties::get (const caseless_str& name) const |
942 { | 946 { |
943 octave_value retval; | 947 octave_value retval; |
944 | 948 |
945 if (name.compare ("tag")) | 949 if (name.compare ("tag")) |
946 retval = tag; | 950 retval = tag; |
952 retval = children; | 956 retval = children; |
953 else if (name.compare ("__modified__")) | 957 else if (name.compare ("__modified__")) |
954 retval = __modified__; | 958 retval = __modified__; |
955 else if (name.compare ("__plot_stream__")) | 959 else if (name.compare ("__plot_stream__")) |
956 retval = __plot_stream__; | 960 retval = __plot_stream__; |
961 else if (name.compare ("__enhanced__")) | |
962 retval = __enhanced__; | |
957 else if (name.compare ("nextplot")) | 963 else if (name.compare ("nextplot")) |
958 retval = nextplot; | 964 retval = nextplot; |
959 else if (name.compare ("closerequestfcn")) | 965 else if (name.compare ("closerequestfcn")) |
960 retval = closerequestfcn; | 966 retval = closerequestfcn; |
961 else if (name.compare ("currentaxes")) | 967 else if (name.compare ("currentaxes")) |
1006 | 1012 |
1007 return m; | 1013 return m; |
1008 } | 1014 } |
1009 | 1015 |
1010 octave_value | 1016 octave_value |
1011 figure::get_default (const property_name& name) const | 1017 figure::get_default (const caseless_str& name) const |
1012 { | 1018 { |
1013 octave_value retval = default_properties.lookup (name); | 1019 octave_value retval = default_properties.lookup (name); |
1014 | 1020 |
1015 if (retval.is_undefined ()) | 1021 if (retval.is_undefined ()) |
1016 { | 1022 { |
1104 xaxislocation ("bottom"), | 1110 xaxislocation ("bottom"), |
1105 yaxislocation ("left"), | 1111 yaxislocation ("left"), |
1106 view (), | 1112 view (), |
1107 visible ("on"), | 1113 visible ("on"), |
1108 nextplot ("replace"), | 1114 nextplot ("replace"), |
1109 outerposition () | 1115 outerposition (), |
1116 __colorbar__ (radio_values ("{none}|north|south|east|west|northoutside|southoutside|eastoutside|westoutside")) | |
1110 { | 1117 { |
1111 Matrix tlim (1, 2, 0.0); | 1118 Matrix tlim (1, 2, 0.0); |
1112 tlim(1) = 1; | 1119 tlim(1) = 1; |
1113 xlim = tlim; | 1120 xlim = tlim; |
1114 ylim = tlim; | 1121 ylim = tlim; |
1190 { | 1197 { |
1191 set_zlabel (::reparent (val, "set", "zlabel", __myhandle__, false)); | 1198 set_zlabel (::reparent (val, "set", "zlabel", __myhandle__, false)); |
1192 } | 1199 } |
1193 | 1200 |
1194 void | 1201 void |
1195 axes::properties::set (const property_name& name, const octave_value& val) | 1202 axes::properties::set (const caseless_str& name, const octave_value& val) |
1196 { | 1203 { |
1197 bool modified = true; | 1204 bool modified = true; |
1198 | 1205 |
1199 if (name.compare ("tag")) | 1206 if (name.compare ("tag")) |
1200 set_tag (val); | 1207 set_tag (val); |
1305 set_visible (val); | 1312 set_visible (val); |
1306 else if (name.compare ("nextplot")) | 1313 else if (name.compare ("nextplot")) |
1307 set_nextplot (val); | 1314 set_nextplot (val); |
1308 else if (name.compare ("outerposition")) | 1315 else if (name.compare ("outerposition")) |
1309 set_outerposition (val); | 1316 set_outerposition (val); |
1317 else if (name.compare ("__colorbar__")) | |
1318 set___colorbar__ (val); | |
1310 else | 1319 else |
1311 { | 1320 { |
1312 modified = false; | 1321 modified = false; |
1313 warning ("set: invalid property `%s'", name.c_str ()); | 1322 warning ("set: invalid property `%s'", name.c_str ()); |
1314 } | 1323 } |
1390 Matrix touterposition (1, 4, 0.0); | 1399 Matrix touterposition (1, 4, 0.0); |
1391 touterposition(2) = 1; | 1400 touterposition(2) = 1; |
1392 touterposition(3) = 1; | 1401 touterposition(3) = 1; |
1393 outerposition = touterposition; | 1402 outerposition = touterposition; |
1394 } | 1403 } |
1404 | |
1405 __colorbar__ = radio_property (radio_values ("{none}|north|south|east|west|northoutside|southoutside|eastoutside|westoutside")); | |
1395 | 1406 |
1396 delete_children (); | 1407 delete_children (); |
1397 | 1408 |
1398 children = Matrix (); | 1409 children = Matrix (); |
1399 | 1410 |
1494 m.assign ("yaxislocation", yaxislocation); | 1505 m.assign ("yaxislocation", yaxislocation); |
1495 m.assign ("view", view); | 1506 m.assign ("view", view); |
1496 m.assign ("visible", visible); | 1507 m.assign ("visible", visible); |
1497 m.assign ("nextplot", nextplot); | 1508 m.assign ("nextplot", nextplot); |
1498 m.assign ("outerposition", outerposition); | 1509 m.assign ("outerposition", outerposition); |
1510 m.assign ("__colorbar__", __colorbar__); | |
1499 | 1511 |
1500 return m; | 1512 return m; |
1501 } | 1513 } |
1502 | 1514 |
1503 octave_value | 1515 octave_value |
1504 axes::properties::get (const property_name& name) const | 1516 axes::properties::get (const caseless_str& name) const |
1505 { | 1517 { |
1506 octave_value retval; | 1518 octave_value retval; |
1507 | 1519 |
1508 if (name.compare ("tag")) | 1520 if (name.compare ("tag")) |
1509 retval = tag; | 1521 retval = tag; |
1613 retval = visible; | 1625 retval = visible; |
1614 else if (name.compare ("nextplot")) | 1626 else if (name.compare ("nextplot")) |
1615 retval = nextplot; | 1627 retval = nextplot; |
1616 else if (name.compare ("outerposition")) | 1628 else if (name.compare ("outerposition")) |
1617 retval = outerposition; | 1629 retval = outerposition; |
1630 else if (name.compare ("__colorbar__")) | |
1631 retval = __colorbar__; | |
1618 else | 1632 else |
1619 warning ("get: invalid property `%s'", name.c_str ()); | 1633 warning ("get: invalid property `%s'", name.c_str ()); |
1620 | 1634 |
1621 return retval; | 1635 return retval; |
1622 } | 1636 } |
1719 Matrix touterposition (1, 4, 0.0); | 1733 Matrix touterposition (1, 4, 0.0); |
1720 touterposition(2) = 1; | 1734 touterposition(2) = 1; |
1721 touterposition(3) = 1; | 1735 touterposition(3) = 1; |
1722 | 1736 |
1723 m["outerposition"] = touterposition; | 1737 m["outerposition"] = touterposition; |
1738 m["__colorbar__"] = radio_property (radio_values ("{none}|north|south|east|west|northoutside|southoutside|eastoutside|westoutside")); | |
1724 | 1739 |
1725 return m; | 1740 return m; |
1726 } | 1741 } |
1727 | 1742 |
1728 octave_value | 1743 octave_value |
1729 axes::get_default (const property_name& name) const | 1744 axes::get_default (const caseless_str& name) const |
1730 { | 1745 { |
1731 octave_value retval = default_properties.lookup (name); | 1746 octave_value retval = default_properties.lookup (name); |
1732 | 1747 |
1733 if (retval.is_undefined ()) | 1748 if (retval.is_undefined ()) |
1734 { | 1749 { |
1771 linewidth (0.5), | 1786 linewidth (0.5), |
1772 marker ("none"), | 1787 marker ("none"), |
1773 markeredgecolor ("auto"), | 1788 markeredgecolor ("auto"), |
1774 markerfacecolor ("none"), | 1789 markerfacecolor ("none"), |
1775 markersize (1), | 1790 markersize (1), |
1776 keylabel ("") | 1791 keylabel (""), |
1792 interpreter (radio_values ("{tex}|none|latex")) | |
1777 { } | 1793 { } |
1778 | 1794 |
1779 void | 1795 void |
1780 line::properties::set (const property_name& name, const octave_value& val) | 1796 line::properties::set (const caseless_str& name, const octave_value& val) |
1781 { | 1797 { |
1782 bool modified = true; | 1798 bool modified = true; |
1783 | 1799 |
1784 if (name.compare ("tag")) | 1800 if (name.compare ("tag")) |
1785 set_tag (val); | 1801 set_tag (val); |
1820 set_markerfacecolor (val); | 1836 set_markerfacecolor (val); |
1821 else if (name.compare ("markersize")) | 1837 else if (name.compare ("markersize")) |
1822 set_markersize (val); | 1838 set_markersize (val); |
1823 else if (name.compare ("keylabel")) | 1839 else if (name.compare ("keylabel")) |
1824 set_keylabel (val); | 1840 set_keylabel (val); |
1841 else if (name.compare ("interpreter")) | |
1842 set_interpreter (val); | |
1825 else | 1843 else |
1826 { | 1844 { |
1827 modified = false; | 1845 modified = false; |
1828 warning ("set: invalid property `%s'", name.c_str ()); | 1846 warning ("set: invalid property `%s'", name.c_str ()); |
1829 } | 1847 } |
1855 m.assign ("marker", marker); | 1873 m.assign ("marker", marker); |
1856 m.assign ("markeredgecolor", markeredgecolor); | 1874 m.assign ("markeredgecolor", markeredgecolor); |
1857 m.assign ("markerfacecolor", markerfacecolor); | 1875 m.assign ("markerfacecolor", markerfacecolor); |
1858 m.assign ("markersize", markersize); | 1876 m.assign ("markersize", markersize); |
1859 m.assign ("keylabel", keylabel); | 1877 m.assign ("keylabel", keylabel); |
1878 m.assign ("interpreter", interpreter); | |
1860 | 1879 |
1861 return m; | 1880 return m; |
1862 } | 1881 } |
1863 | 1882 |
1864 octave_value | 1883 octave_value |
1865 line::properties::get (const property_name& name) const | 1884 line::properties::get (const caseless_str& name) const |
1866 { | 1885 { |
1867 octave_value retval; | 1886 octave_value retval; |
1868 | 1887 |
1869 if (name.compare ("tag")) | 1888 if (name.compare ("tag")) |
1870 retval = tag; | 1889 retval = tag; |
1904 retval = markerfacecolor; | 1923 retval = markerfacecolor; |
1905 else if (name.compare ("markersize")) | 1924 else if (name.compare ("markersize")) |
1906 retval = markersize; | 1925 retval = markersize; |
1907 else if (name.compare ("keylabel")) | 1926 else if (name.compare ("keylabel")) |
1908 retval = keylabel; | 1927 retval = keylabel; |
1928 else if (name.compare ("interpreter")) | |
1929 retval = interpreter; | |
1909 else | 1930 else |
1910 warning ("get: invalid property `%s'", name.c_str ()); | 1931 warning ("get: invalid property `%s'", name.c_str ()); |
1911 | 1932 |
1912 return retval; | 1933 return retval; |
1913 } | 1934 } |
1930 m["marker"] = "none"; | 1951 m["marker"] = "none"; |
1931 m["markeredgecolor"] = "auto"; | 1952 m["markeredgecolor"] = "auto"; |
1932 m["markerfacecolor"] = "none"; | 1953 m["markerfacecolor"] = "none"; |
1933 m["markersize"] = 1; | 1954 m["markersize"] = 1; |
1934 m["keylabel"] = ""; | 1955 m["keylabel"] = ""; |
1956 m["interpreter"] = | |
1957 radio_property (radio_values ("{tex}|none|latex")); | |
1935 | 1958 |
1936 return m; | 1959 return m; |
1937 } | 1960 } |
1938 | 1961 |
1939 std::string line::properties::go_name ("line"); | 1962 std::string line::properties::go_name ("line"); |
1950 horizontalalignment ("left"), | 1973 horizontalalignment ("left"), |
1951 color (Matrix (1, 3, 0.0)), | 1974 color (Matrix (1, 3, 0.0)), |
1952 fontname ("Helvetica"), | 1975 fontname ("Helvetica"), |
1953 fontsize (10), | 1976 fontsize (10), |
1954 fontangle (radio_values ("{normal}|italic|oblique")), | 1977 fontangle (radio_values ("{normal}|italic|oblique")), |
1955 fontweight (radio_values ("{normal}|bold|demi|light")) | 1978 fontweight (radio_values ("{normal}|bold|demi|light")), |
1979 interpreter (radio_values ("{tex}|none|latex")) | |
1956 { } | 1980 { } |
1957 | 1981 |
1958 void | 1982 void |
1959 text::properties::set (const property_name& name, const octave_value& val) | 1983 text::properties::set (const caseless_str& name, const octave_value& val) |
1960 { | 1984 { |
1961 bool modified = true; | 1985 bool modified = true; |
1962 | 1986 |
1963 if (name.compare ("tag")) | 1987 if (name.compare ("tag")) |
1964 set_tag (val); | 1988 set_tag (val); |
1989 set_fontsize (val); | 2013 set_fontsize (val); |
1990 else if (name.compare ("fontangle")) | 2014 else if (name.compare ("fontangle")) |
1991 set_fontangle (val); | 2015 set_fontangle (val); |
1992 else if (name.compare ("fontweight")) | 2016 else if (name.compare ("fontweight")) |
1993 set_fontweight (val); | 2017 set_fontweight (val); |
2018 else if (name.compare ("interpreter")) | |
2019 set_interpreter (val); | |
1994 else | 2020 else |
1995 { | 2021 { |
1996 modified = false; | 2022 modified = false; |
1997 warning ("set: invalid property `%s'", name.c_str ()); | 2023 warning ("set: invalid property `%s'", name.c_str ()); |
1998 } | 2024 } |
2019 m.assign ("color", color); | 2045 m.assign ("color", color); |
2020 m.assign ("fontname", fontname); | 2046 m.assign ("fontname", fontname); |
2021 m.assign ("fontsize", fontsize); | 2047 m.assign ("fontsize", fontsize); |
2022 m.assign ("fontangle", fontangle); | 2048 m.assign ("fontangle", fontangle); |
2023 m.assign ("fontweight", fontweight); | 2049 m.assign ("fontweight", fontweight); |
2050 m.assign ("interpreter", interpreter); | |
2024 | 2051 |
2025 return m; | 2052 return m; |
2026 } | 2053 } |
2027 | 2054 |
2028 octave_value | 2055 octave_value |
2029 text::properties::get (const property_name& name) const | 2056 text::properties::get (const caseless_str& name) const |
2030 { | 2057 { |
2031 octave_value retval; | 2058 octave_value retval; |
2032 | 2059 |
2033 if (name.compare ("tag")) | 2060 if (name.compare ("tag")) |
2034 retval = tag; | 2061 retval = tag; |
2058 retval = fontsize; | 2085 retval = fontsize; |
2059 else if (name.compare ("fontangle")) | 2086 else if (name.compare ("fontangle")) |
2060 retval = fontangle; | 2087 retval = fontangle; |
2061 else if (name.compare ("fontweight")) | 2088 else if (name.compare ("fontweight")) |
2062 retval = fontweight; | 2089 retval = fontweight; |
2090 else if (name.compare ("interpreter")) | |
2091 retval = interpreter; | |
2063 else | 2092 else |
2064 warning ("get: invalid property `%s'", name.c_str ()); | 2093 warning ("get: invalid property `%s'", name.c_str ()); |
2065 | 2094 |
2066 return retval; | 2095 return retval; |
2067 } | 2096 } |
2078 m["horizontalalignment"] = "left"; | 2107 m["horizontalalignment"] = "left"; |
2079 m["color"] = Matrix (1, 3, 1.0); | 2108 m["color"] = Matrix (1, 3, 1.0); |
2080 m["fontname"] = "Helvetica"; | 2109 m["fontname"] = "Helvetica"; |
2081 m["fontsize"] = 10; | 2110 m["fontsize"] = 10; |
2082 m["fontangle"] = | 2111 m["fontangle"] = |
2083 string_property ("normal", radio_values ("{normal}|italic|oblique")); | 2112 radio_property (radio_values ("{normal}|italic|oblique")); |
2084 m["fontweight"] = | 2113 m["fontweight"] = |
2085 string_property ("normal", radio_values ("{normal}|bold|demi|light")); | 2114 radio_property (radio_values ("{normal}|bold|demi|light")); |
2115 m["interpreter"] = | |
2116 radio_property (radio_values ("{tex}|none|latex")); | |
2086 | 2117 |
2087 return m; | 2118 return m; |
2088 } | 2119 } |
2089 | 2120 |
2090 std::string text::properties::go_name ("text"); | 2121 std::string text::properties::go_name ("text"); |
2098 xdata (Matrix ()), | 2129 xdata (Matrix ()), |
2099 ydata (Matrix ()) | 2130 ydata (Matrix ()) |
2100 { } | 2131 { } |
2101 | 2132 |
2102 void | 2133 void |
2103 image::properties::set (const property_name& name, | 2134 image::properties::set (const caseless_str& name, |
2104 const octave_value& val) | 2135 const octave_value& val) |
2105 { | 2136 { |
2106 bool modified = true; | 2137 bool modified = true; |
2107 | 2138 |
2108 if (name.compare ("tag")) | 2139 if (name.compare ("tag")) |
2148 | 2179 |
2149 return m; | 2180 return m; |
2150 } | 2181 } |
2151 | 2182 |
2152 octave_value | 2183 octave_value |
2153 image::properties::get (const property_name& name) const | 2184 image::properties::get (const caseless_str& name) const |
2154 { | 2185 { |
2155 octave_value retval; | 2186 octave_value retval; |
2156 | 2187 |
2157 if (name.compare ("tag")) | 2188 if (name.compare ("tag")) |
2158 retval = tag; | 2189 retval = tag; |
2208 linewidth (0.5), | 2239 linewidth (0.5), |
2209 marker ("none"), | 2240 marker ("none"), |
2210 markeredgecolor ("auto"), | 2241 markeredgecolor ("auto"), |
2211 markerfacecolor ("none"), | 2242 markerfacecolor ("none"), |
2212 markersize (1), | 2243 markersize (1), |
2213 keylabel ("") | 2244 keylabel (""), |
2245 interpreter (radio_values ("{tex}|none|latex")) | |
2214 { } | 2246 { } |
2215 | 2247 |
2216 void | 2248 void |
2217 patch::properties::set (const property_name& name, | 2249 patch::properties::set (const caseless_str& name, |
2218 const octave_value& val) | 2250 const octave_value& val) |
2219 { | 2251 { |
2220 bool modified = true; | 2252 bool modified = true; |
2221 | 2253 |
2222 if (name.compare ("tag")) | 2254 if (name.compare ("tag")) |
2260 set_markerfacecolor (val); | 2292 set_markerfacecolor (val); |
2261 else if (name.compare ("markersize")) | 2293 else if (name.compare ("markersize")) |
2262 set_markersize (val); | 2294 set_markersize (val); |
2263 else if (name.compare ("keylabel")) | 2295 else if (name.compare ("keylabel")) |
2264 set_keylabel (val); | 2296 set_keylabel (val); |
2297 else if (name.compare ("interpreter")) | |
2298 set_interpreter (val); | |
2265 else | 2299 else |
2266 { | 2300 { |
2267 modified = false; | 2301 modified = false; |
2268 warning ("set: invalid property `%s'", name.c_str ()); | 2302 warning ("set: invalid property `%s'", name.c_str ()); |
2269 } | 2303 } |
2296 m.assign ("marker", marker); | 2330 m.assign ("marker", marker); |
2297 m.assign ("markeredgecolor", markeredgecolor); | 2331 m.assign ("markeredgecolor", markeredgecolor); |
2298 m.assign ("markerface", markerfacecolor); | 2332 m.assign ("markerface", markerfacecolor); |
2299 m.assign ("markersize", markersize); | 2333 m.assign ("markersize", markersize); |
2300 m.assign ("keylabel", keylabel); | 2334 m.assign ("keylabel", keylabel); |
2335 m.assign ("interpreter", interpreter); | |
2301 | 2336 |
2302 return m; | 2337 return m; |
2303 } | 2338 } |
2304 | 2339 |
2305 octave_value | 2340 octave_value |
2306 patch::properties::get (const property_name& name) const | 2341 patch::properties::get (const caseless_str& name) const |
2307 { | 2342 { |
2308 octave_value retval; | 2343 octave_value retval; |
2309 | 2344 |
2310 if (name.compare ("tag")) | 2345 if (name.compare ("tag")) |
2311 retval = tag; | 2346 retval = tag; |
2347 retval = markerfacecolor; | 2382 retval = markerfacecolor; |
2348 else if (name.compare ("markersize")) | 2383 else if (name.compare ("markersize")) |
2349 retval = markersize; | 2384 retval = markersize; |
2350 else if (name.compare ("keylabel")) | 2385 else if (name.compare ("keylabel")) |
2351 retval = keylabel; | 2386 retval = keylabel; |
2387 else if (name.compare ("interpreter")) | |
2388 retval = interpreter; | |
2352 else | 2389 else |
2353 warning ("get: invalid property `%s'", name.c_str ()); | 2390 warning ("get: invalid property `%s'", name.c_str ()); |
2354 | 2391 |
2355 return retval; | 2392 return retval; |
2356 } | 2393 } |
2374 m["marker"] = "none"; | 2411 m["marker"] = "none"; |
2375 m["markeredgecolor"] = "auto"; | 2412 m["markeredgecolor"] = "auto"; |
2376 m["markerfacecolor"] = "none"; | 2413 m["markerfacecolor"] = "none"; |
2377 m["markersize"] = 1; | 2414 m["markersize"] = 1; |
2378 m["keylabel"] = ""; | 2415 m["keylabel"] = ""; |
2416 m["interpreter"] = | |
2417 radio_property (radio_values ("{tex}|none|latex")); | |
2379 | 2418 |
2380 return m; | 2419 return m; |
2381 } | 2420 } |
2382 | 2421 |
2383 std::string patch::properties::go_name ("patch"); | 2422 std::string patch::properties::go_name ("patch"); |
2398 linewidth (0.5), | 2437 linewidth (0.5), |
2399 marker ("none"), | 2438 marker ("none"), |
2400 markeredgecolor ("auto"), | 2439 markeredgecolor ("auto"), |
2401 markerfacecolor ("none"), | 2440 markerfacecolor ("none"), |
2402 markersize (1), | 2441 markersize (1), |
2403 keylabel ("") | 2442 keylabel (""), |
2443 interpreter (radio_values ("{tex}|none|latex")) | |
2404 { } | 2444 { } |
2405 | 2445 |
2406 void | 2446 void |
2407 surface::properties::set (const property_name& name, | 2447 surface::properties::set (const caseless_str& name, |
2408 const octave_value& val) | 2448 const octave_value& val) |
2409 { | 2449 { |
2410 bool modified = true; | 2450 bool modified = true; |
2411 | 2451 |
2412 if (name.compare ("tag")) | 2452 if (name.compare ("tag")) |
2446 set_markerfacecolor (val); | 2486 set_markerfacecolor (val); |
2447 else if (name.compare ("markersize")) | 2487 else if (name.compare ("markersize")) |
2448 set_markersize (val); | 2488 set_markersize (val); |
2449 else if (name.compare ("keylabel")) | 2489 else if (name.compare ("keylabel")) |
2450 set_keylabel (val); | 2490 set_keylabel (val); |
2491 else if (name.compare ("interpreter")) | |
2492 set_interpreter (val); | |
2451 else | 2493 else |
2452 { | 2494 { |
2453 modified = false; | 2495 modified = false; |
2454 warning ("set: invalid property `%s'", name.c_str ()); | 2496 warning ("set: invalid property `%s'", name.c_str ()); |
2455 } | 2497 } |
2480 m.assign ("marker", marker); | 2522 m.assign ("marker", marker); |
2481 m.assign ("markeredgecolor", markeredgecolor); | 2523 m.assign ("markeredgecolor", markeredgecolor); |
2482 m.assign ("markerface", markerfacecolor); | 2524 m.assign ("markerface", markerfacecolor); |
2483 m.assign ("markersize", markersize); | 2525 m.assign ("markersize", markersize); |
2484 m.assign ("keylabel", keylabel); | 2526 m.assign ("keylabel", keylabel); |
2527 m.assign ("interpreter", interpreter); | |
2485 | 2528 |
2486 return m; | 2529 return m; |
2487 } | 2530 } |
2488 | 2531 |
2489 octave_value | 2532 octave_value |
2490 surface::properties::get (const property_name& name) const | 2533 surface::properties::get (const caseless_str& name) const |
2491 { | 2534 { |
2492 octave_value retval; | 2535 octave_value retval; |
2493 | 2536 |
2494 if (name.compare ("tag")) | 2537 if (name.compare ("tag")) |
2495 retval = tag; | 2538 retval = tag; |
2527 retval = markerfacecolor; | 2570 retval = markerfacecolor; |
2528 else if (name.compare ("markersize")) | 2571 else if (name.compare ("markersize")) |
2529 retval = markersize; | 2572 retval = markersize; |
2530 else if (name.compare ("keylabel")) | 2573 else if (name.compare ("keylabel")) |
2531 retval = keylabel; | 2574 retval = keylabel; |
2575 else if (name.compare ("interpreter")) | |
2576 retval = interpreter; | |
2532 else | 2577 else |
2533 warning ("get: invalid property `%s'", name.c_str ()); | 2578 warning ("get: invalid property `%s'", name.c_str ()); |
2534 | 2579 |
2535 return retval; | 2580 return retval; |
2536 } | 2581 } |
2552 m["marker"] = "none"; | 2597 m["marker"] = "none"; |
2553 m["markeredgecolor"] = "auto"; | 2598 m["markeredgecolor"] = "auto"; |
2554 m["markerfacecolor"] = "none"; | 2599 m["markerfacecolor"] = "none"; |
2555 m["markersize"] = 1; | 2600 m["markersize"] = 1; |
2556 m["keylabel"] = ""; | 2601 m["keylabel"] = ""; |
2602 m["interpreter"] = | |
2603 radio_property (radio_values ("{tex}|none|latex")); | |
2557 | 2604 |
2558 return m; | 2605 return m; |
2559 } | 2606 } |
2560 | 2607 |
2561 std::string surface::properties::go_name ("surface"); | 2608 std::string surface::properties::go_name ("surface"); |
2562 | 2609 |
2563 // --------------------------------------------------------------------- | 2610 // --------------------------------------------------------------------- |
2564 | 2611 |
2565 octave_value | 2612 octave_value |
2566 base_graphics_object::get_default (const property_name& name) const | 2613 base_graphics_object::get_default (const caseless_str& name) const |
2567 { | 2614 { |
2568 graphics_handle parent = get_parent (); | 2615 graphics_handle parent = get_parent (); |
2569 graphics_object parent_obj = gh_manager::get_object (parent); | 2616 graphics_object parent_obj = gh_manager::get_object (parent); |
2570 | 2617 |
2571 return parent_obj.get_default (type () + name); | 2618 return parent_obj.get_default (type () + name); |
2572 } | 2619 } |
2573 | 2620 |
2574 octave_value | 2621 octave_value |
2575 base_graphics_object::get_factory_default (const property_name& name) const | 2622 base_graphics_object::get_factory_default (const caseless_str& name) const |
2576 { | 2623 { |
2577 graphics_object parent_obj = gh_manager::get_object (0); | 2624 graphics_object parent_obj = gh_manager::get_object (0); |
2578 | 2625 |
2579 return parent_obj.get_factory_default (type () + name); | 2626 return parent_obj.get_factory_default (type () + name); |
2580 } | 2627 } |
2763 { | 2810 { |
2764 if (nargin == 1) | 2811 if (nargin == 1) |
2765 vlist(n) = obj.get (); | 2812 vlist(n) = obj.get (); |
2766 else | 2813 else |
2767 { | 2814 { |
2768 property_name property = args(1).string_value (); | 2815 caseless_str property = args(1).string_value (); |
2769 | 2816 |
2770 if (! error_state) | 2817 if (! error_state) |
2771 vlist(n) = obj.get (property); | 2818 vlist(n) = obj.get (property); |
2772 else | 2819 else |
2773 { | 2820 { |
3073 graphics_object obj = gh_manager::get_object (handle); | 3120 graphics_object obj = gh_manager::get_object (handle); |
3074 octave_value retval; | 3121 octave_value retval; |
3075 | 3122 |
3076 if (obj) | 3123 if (obj) |
3077 { | 3124 { |
3078 property_name p = std::string (property); | 3125 caseless_str p = std::string (property); |
3079 retval = obj.get (p); | 3126 retval = obj.get (p); |
3080 } | 3127 } |
3081 else | 3128 else |
3082 error ("%s: invalid handle (= %g)", func.c_str(), handle); | 3129 error ("%s: invalid handle (= %g)", func.c_str(), handle); |
3083 | 3130 |
3091 graphics_object obj = gh_manager::get_object (handle); | 3138 graphics_object obj = gh_manager::get_object (handle); |
3092 int ret = false; | 3139 int ret = false; |
3093 | 3140 |
3094 if (obj) | 3141 if (obj) |
3095 { | 3142 { |
3096 property_name p = std::string (property); | 3143 caseless_str p = std::string (property); |
3097 obj.set (p, arg); | 3144 obj.set (p, arg); |
3098 if (!error_state) | 3145 if (!error_state) |
3099 ret = true; | 3146 ret = true; |
3100 } | 3147 } |
3101 else | 3148 else |