diff 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
line wrap: on
line diff
--- a/src/graphics.cc	Mon Nov 26 20:31:25 2007 +0000
+++ b/src/graphics.cc	Mon Nov 26 20:42:11 2007 +0000
@@ -219,7 +219,7 @@
 
 
 void
-property_list::set (const property_name& name, const octave_value& val)
+property_list::set (const caseless_str& name, const octave_value& val)
 {
   size_t offset = 0;
 
@@ -227,7 +227,7 @@
 
   if (len > 4)
     {
-      property_name pfx = name.substr (0, 4);
+      caseless_str pfx = name.substr (0, 4);
 
       if (pfx.compare ("axes") || pfx.compare ("line")
 	  || pfx.compare ("text"))
@@ -266,7 +266,7 @@
 	  bool remove = false;
 	  if (val.is_string ())
 	    {
-	      property_name tval = val.string_value ();
+	      caseless_str tval = val.string_value ();
 
 	      remove = tval.compare ("remove");
 	    }
@@ -290,7 +290,7 @@
 }
 
 octave_value
-property_list::lookup (const property_name& name) const
+property_list::lookup (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -300,7 +300,7 @@
 
   if (len > 4)
     {
-      property_name pfx = name.substr (0, 4);
+      caseless_str pfx = name.substr (0, 4);
 
       if (pfx.compare ("axes") || pfx.compare ("line")
 	  || pfx.compare ("text"))
@@ -398,7 +398,7 @@
     {
       for (int i = 0; i < nargin; i += 2)
 	{
-	  property_name name = args(i).string_value ();
+	  caseless_str name = args(i).string_value ();
 
 	  if (! error_state)
 	    {
@@ -406,7 +406,7 @@
 
 	      if (val.is_string ())
 		{
-		  property_name tval = val.string_value ();
+		  caseless_str tval = val.string_value ();
 
 		  if (tval.compare ("default"))
 		    val = get_default (name);
@@ -485,7 +485,7 @@
 gh_manager *gh_manager::instance = 0;
 
 static void
-xset (const graphics_handle& h, const property_name& name,
+xset (const graphics_handle& h, const caseless_str& name,
       const octave_value& val)
 {
   graphics_object obj = gh_manager::get_object (h);
@@ -504,7 +504,7 @@
 
 
 static octave_value
-xget (const graphics_handle& h, const property_name& name)
+xget (const graphics_handle& h, const caseless_str& name)
 {
   graphics_object obj = gh_manager::get_object (h);
   return obj.get (name);
@@ -784,7 +784,7 @@
 }
 
 void
-root_figure::properties::set (const property_name& name,
+root_figure::properties::set (const caseless_str& name,
 			      const octave_value& val)
 {
   if (name.compare ("tag"))
@@ -813,7 +813,7 @@
 }
 
 octave_value 
-root_figure::properties::get (const property_name& name) const
+root_figure::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -844,6 +844,7 @@
 				const graphics_handle& p)
   : base_properties (go_name, mh, p),
     __plot_stream__ (Matrix ()),
+    __enhanced__ (false),
     nextplot ("replace"),
     closerequestfcn (make_fcn_handle ("closereq")),
     currentaxes (octave_NaN),
@@ -879,7 +880,7 @@
 }
 
 void
-figure::properties::set (const property_name& name, const octave_value& val)
+figure::properties::set (const caseless_str& name, const octave_value& val)
 {
   bool modified = true;
 
@@ -894,6 +895,8 @@
     }
   else if (name.compare ("__plot_stream__"))
     set___plot_stream__ (val);
+  else if (name.compare ("__enhanced__"))
+    set___enhanced__ (val);
   else if (name.compare ("nextplot"))
     set_nextplot (val);
   else if (name.compare ("closerequestfcn"))
@@ -927,6 +930,7 @@
   m.assign ("children", children);
   m.assign ("__modified__", __modified__);
   m.assign ("__plot_stream__", __plot_stream__);
+  m.assign ("__enhanced__", __enhanced__);
   m.assign ("nextplot", nextplot);
   m.assign ("closerequestfcn", closerequestfcn);
   m.assign ("currentaxes", currentaxes.as_octave_value ());
@@ -938,7 +942,7 @@
 }
 
 octave_value
-figure::properties::get (const property_name& name) const
+figure::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -954,6 +958,8 @@
     retval = __modified__;
   else if (name.compare ("__plot_stream__"))
     retval = __plot_stream__;
+  else if (name.compare ("__enhanced__"))
+    retval = __enhanced__;
   else if (name.compare ("nextplot"))
     retval = nextplot;
   else if (name.compare ("closerequestfcn"))
@@ -1008,7 +1014,7 @@
 }
 
 octave_value
-figure::get_default (const property_name& name) const
+figure::get_default (const caseless_str& name) const
 {
   octave_value retval = default_properties.lookup (name);
 
@@ -1106,7 +1112,8 @@
     view (),
     visible ("on"),
     nextplot ("replace"),
-    outerposition ()
+    outerposition (),
+    __colorbar__ (radio_values ("{none}|north|south|east|west|northoutside|southoutside|eastoutside|westoutside"))
 {
   Matrix tlim (1, 2, 0.0);
   tlim(1) = 1;
@@ -1192,7 +1199,7 @@
 }
 
 void
-axes::properties::set (const property_name& name, const octave_value& val)
+axes::properties::set (const caseless_str& name, const octave_value& val)
 {
   bool modified = true;
 
@@ -1307,6 +1314,8 @@
     set_nextplot (val);
   else if (name.compare ("outerposition"))
     set_outerposition (val);
+  else if (name.compare ("__colorbar__"))
+    set___colorbar__ (val);
   else
     {
       modified = false;
@@ -1393,6 +1402,8 @@
       outerposition = touterposition;
     }
 
+  __colorbar__  = radio_property (radio_values ("{none}|north|south|east|west|northoutside|southoutside|eastoutside|westoutside"));
+
   delete_children ();
 
   children = Matrix ();
@@ -1496,12 +1507,13 @@
   m.assign ("visible", visible);
   m.assign ("nextplot", nextplot);
   m.assign ("outerposition", outerposition);
+  m.assign ("__colorbar__", __colorbar__);
 
   return m;
 }
 
 octave_value
-axes::properties::get (const property_name& name) const
+axes::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -1615,6 +1627,8 @@
     retval = nextplot;
   else if (name.compare ("outerposition"))
     retval = outerposition;
+  else if (name.compare ("__colorbar__"))
+    retval = __colorbar__;
   else
     warning ("get: invalid property `%s'", name.c_str ());
 
@@ -1721,12 +1735,13 @@
   touterposition(3) = 1;
 
   m["outerposition"] = touterposition;
+  m["__colorbar__"] = radio_property (radio_values ("{none}|north|south|east|west|northoutside|southoutside|eastoutside|westoutside"));
 
   return m;
 }
 
 octave_value
-axes::get_default (const property_name& name) const
+axes::get_default (const caseless_str& name) const
 {
   octave_value retval = default_properties.lookup (name);
 
@@ -1773,11 +1788,12 @@
     markeredgecolor ("auto"),
     markerfacecolor ("none"),
     markersize (1),
-    keylabel ("")
+    keylabel (""),
+    interpreter (radio_values ("{tex}|none|latex"))
 { }
 
 void
-line::properties::set (const property_name& name, const octave_value& val)
+line::properties::set (const caseless_str& name, const octave_value& val)
 {
   bool modified = true;
 
@@ -1822,6 +1838,8 @@
     set_markersize (val);
   else if (name.compare ("keylabel"))
     set_keylabel (val);
+  else if (name.compare ("interpreter"))
+    set_interpreter (val);
   else
     {
       modified = false;
@@ -1857,12 +1875,13 @@
   m.assign ("markerfacecolor", markerfacecolor);
   m.assign ("markersize", markersize);
   m.assign ("keylabel", keylabel);
+  m.assign ("interpreter", interpreter);
 
   return m;
 }
 
 octave_value
-line::properties::get (const property_name& name) const
+line::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -1906,6 +1925,8 @@
     retval = markersize;
   else if (name.compare ("keylabel"))
     retval = keylabel;
+  else if (name.compare ("interpreter"))
+    retval = interpreter;
   else
     warning ("get: invalid property `%s'", name.c_str ());
 
@@ -1932,6 +1953,8 @@
   m["markerfacecolor"] = "none";
   m["markersize"] = 1;
   m["keylabel"] = "";
+  m["interpreter"] = 
+    radio_property (radio_values ("{tex}|none|latex"));
 
   return m;
 }
@@ -1952,11 +1975,12 @@
     fontname ("Helvetica"),
     fontsize (10),
     fontangle (radio_values ("{normal}|italic|oblique")),
-    fontweight (radio_values ("{normal}|bold|demi|light"))
+    fontweight (radio_values ("{normal}|bold|demi|light")),
+    interpreter (radio_values ("{tex}|none|latex"))
 { }
 
 void
-text::properties::set (const property_name& name, const octave_value& val)
+text::properties::set (const caseless_str& name, const octave_value& val)
 {
   bool modified = true;
 
@@ -1991,6 +2015,8 @@
     set_fontangle (val);
   else if (name.compare ("fontweight"))
     set_fontweight (val);
+  else if (name.compare ("interpreter"))
+    set_interpreter (val);
   else
     {
       modified = false;
@@ -2021,12 +2047,13 @@
   m.assign ("fontsize", fontsize);
   m.assign ("fontangle", fontangle);
   m.assign ("fontweight", fontweight);
+  m.assign ("interpreter", interpreter);
 
   return m;
 }
 
 octave_value
-text::properties::get (const property_name& name) const
+text::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -2060,6 +2087,8 @@
     retval = fontangle;
   else if (name.compare ("fontweight"))
     retval = fontweight;
+  else if (name.compare ("interpreter"))
+    retval = interpreter;
   else
     warning ("get: invalid property `%s'", name.c_str ());
 
@@ -2080,9 +2109,11 @@
   m["fontname"] = "Helvetica";
   m["fontsize"] = 10;
   m["fontangle"] = 
-      string_property ("normal", radio_values ("{normal}|italic|oblique"));
+      radio_property (radio_values ("{normal}|italic|oblique"));
   m["fontweight"] = 
-    string_property ("normal", radio_values ("{normal}|bold|demi|light"));
+    radio_property (radio_values ("{normal}|bold|demi|light"));
+  m["interpreter"] = 
+    radio_property (radio_values ("{tex}|none|latex"));
 
   return m;
 }
@@ -2100,7 +2131,7 @@
 { }
 
 void
-image::properties::set (const property_name& name,
+image::properties::set (const caseless_str& name,
 			const octave_value& val)
 {
   bool modified = true;
@@ -2150,7 +2181,7 @@
 }
 
 octave_value
-image::properties::get (const property_name& name) const
+image::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -2210,11 +2241,12 @@
     markeredgecolor ("auto"),
     markerfacecolor ("none"),
     markersize (1),
-    keylabel ("")
+    keylabel (""),
+    interpreter (radio_values ("{tex}|none|latex"))
 { }
 
 void
-patch::properties::set (const property_name& name,
+patch::properties::set (const caseless_str& name,
 			const octave_value& val)
 {
   bool modified = true;
@@ -2262,6 +2294,8 @@
     set_markersize (val);
   else if (name.compare ("keylabel"))
     set_keylabel (val);
+  else if (name.compare ("interpreter"))
+    set_interpreter (val);
   else
     {
       modified = false;
@@ -2298,12 +2332,13 @@
   m.assign ("markerface", markerfacecolor);
   m.assign ("markersize", markersize);
   m.assign ("keylabel", keylabel);
+  m.assign ("interpreter", interpreter);
 
   return m;
 }
 
 octave_value
-patch::properties::get (const property_name& name) const
+patch::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -2349,6 +2384,8 @@
     retval = markersize;
   else if (name.compare ("keylabel"))
     retval = keylabel;
+  else if (name.compare ("interpreter"))
+    retval = interpreter;
   else
     warning ("get: invalid property `%s'", name.c_str ());
 
@@ -2376,6 +2413,8 @@
   m["markerfacecolor"] = "none";
   m["markersize"] = 1;
   m["keylabel"] = "";
+  m["interpreter"] = 
+    radio_property (radio_values ("{tex}|none|latex"));
 
   return m;
 }
@@ -2400,11 +2439,12 @@
     markeredgecolor ("auto"),
     markerfacecolor ("none"),
     markersize (1),
-    keylabel ("")
+    keylabel (""),
+    interpreter (radio_values ("{tex}|none|latex"))
 { }
 
 void
-surface::properties::set (const property_name& name,
+surface::properties::set (const caseless_str& name,
 			  const octave_value& val)
 {
   bool modified = true;
@@ -2448,6 +2488,8 @@
     set_markersize (val);
   else if (name.compare ("keylabel"))
     set_keylabel (val);
+  else if (name.compare ("interpreter"))
+    set_interpreter (val);
   else
     {
       modified = false;
@@ -2482,12 +2524,13 @@
   m.assign ("markerface", markerfacecolor);
   m.assign ("markersize", markersize);
   m.assign ("keylabel", keylabel);
+  m.assign ("interpreter", interpreter);
 
   return m;
 }
 
 octave_value
-surface::properties::get (const property_name& name) const
+surface::properties::get (const caseless_str& name) const
 {
   octave_value retval;
 
@@ -2529,6 +2572,8 @@
     retval = markersize;
   else if (name.compare ("keylabel"))
     retval = keylabel;
+  else if (name.compare ("interpreter"))
+    retval = interpreter;
   else
     warning ("get: invalid property `%s'", name.c_str ());
 
@@ -2554,6 +2599,8 @@
   m["markerfacecolor"] = "none";
   m["markersize"] = 1;
   m["keylabel"] = "";
+  m["interpreter"] = 
+    radio_property (radio_values ("{tex}|none|latex"));
 
   return m;
 }
@@ -2563,7 +2610,7 @@
 // ---------------------------------------------------------------------
 
 octave_value
-base_graphics_object::get_default (const property_name& name) const
+base_graphics_object::get_default (const caseless_str& name) const
 {
   graphics_handle parent = get_parent ();
   graphics_object parent_obj = gh_manager::get_object (parent);
@@ -2572,7 +2619,7 @@
 }
 
 octave_value
-base_graphics_object::get_factory_default (const property_name& name) const
+base_graphics_object::get_factory_default (const caseless_str& name) const
 {
   graphics_object parent_obj = gh_manager::get_object (0);
 
@@ -2765,7 +2812,7 @@
                     vlist(n) = obj.get ();
                   else
                     {
-                      property_name property = args(1).string_value ();
+                      caseless_str property = args(1).string_value ();
 
                       if (! error_state)
                         vlist(n) = obj.get (property);
@@ -3075,7 +3122,7 @@
 
   if (obj)
     {
-      property_name p = std::string (property);
+      caseless_str p = std::string (property);
       retval = obj.get (p);
     }
   else
@@ -3093,7 +3140,7 @@
 
   if (obj)
     {
-      property_name p = std::string (property);
+      caseless_str p = std::string (property);
       obj.set (p, arg);
       if (!error_state)
 	ret = true;