octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

improved surface graphic objects


From: Kai Habel
Subject: improved surface graphic objects
Date: Sun, 04 Nov 2007 23:05:10 +0100
User-agent: Thunderbird 2.0.0.6 (X11/20070801)

Hello all,

I have improved the surface graphic object and supporting functions. It
uses now the pm3d mode of gnuplot. At the moment version 4.2 or later is
required to use the new functions.

What does work:

* surface plots (surf)
* mesh plots (mesh)
* density plots (pcolor), they are implemented as surfaces with z=0 and
  color mapping. I have not tried "pm3d map" function so far, it might
  be a better choice for density plots

What does not work:

* shading('interp'),
  since it did not work for flat surfaces with a color mapping

* colorbars,
  before implementing these, we need a solution to link an axis with a
  colorbar (or vice versa) in case of subplots. Keep in mind colorbars
  can be placed everywhere on the figure.

* The display of a surface with a single color (e.g. 'red') and a grid
  with z-coded color


Attached to this mail are the patches for graphics.{cc|h}, which are
required for the other functions to work.

Kai


2007-10-19  Kai Habel  <address@hidden>

  * graphics.h.in (class surface): Add properties for faces, vertices,
  cdata.
  * graphics.cc (surface::properties::properties): Initialize faces
  and vertices.
  (surface::properties::set): Set added properties. Fix cut and paste
  error for facealpha
  (surface::properties::get): Get added properties.
  (surface::properties::factory_defaults): Set added properties.


--- graphics.cc 2007-10-31 21:29:19.000000000 +0100
+++ graphics.cc.new     2007-11-04 22:17:02.000000000 +0100
@@ -2252,7 +2252,7 @@
   else if (name.compare ("facecolor"))
     retval = facecolor;
   else if (name.compare ("facealpha"))
-    retval = facecolor;
+    retval = facealpha;
   else if (name.compare ("egdecolor"))
     retval = edgecolor;
   else if (name.compare ("linestyle"))
@@ -2308,6 +2308,16 @@
     xdata (Matrix ()),
     ydata (Matrix ()),
     zdata (Matrix ()),
+    cdata (Matrix ()),
+    facecolor (radio_values ("{flat}|none|interp")),
+    facealpha (1.0),
+    edgecolor (color_values(0, 0, 0), radio_values ("flat|none|interp")),
+    linestyle ("-"),
+    linewidth (0.5),
+    marker ("none"),
+    markeredgecolor ("auto"),
+    markerfacecolor ("none"),
+    markersize (1),
     keylabel ("")
 { }
 
@@ -2332,6 +2342,26 @@
     set_ydata (val);
   else if (name.compare ("zdata"))
     set_zdata (val);
+  else if (name.compare ("cdata"))
+    set_cdata (val);
+  else if (name.compare ("facecolor"))
+    set_facecolor (val);
+  else if (name.compare ("facealpha"))
+    set_facealpha (val);
+  else if (name.compare ("edgecolor"))
+    set_edgecolor (val);
+  else if (name.compare ("linestyle"))
+    set_linestyle (val);
+  else if (name.compare ("linewidth"))
+    set_linewidth (val);
+  else if (name.compare ("marker"))
+    set_marker (val);
+  else if (name.compare ("markeredgecolor"))
+    set_markeredgecolor (val);
+  else if (name.compare ("markerfacecolor"))
+    set_markerfacecolor (val);
+  else if (name.compare ("markersize"))
+    set_markersize (val);
   else if (name.compare ("keylabel"))
     set_keylabel (val);
   else
@@ -2356,6 +2386,16 @@
   m.assign ("xdata", xdata);
   m.assign ("ydata", ydata);
   m.assign ("zdata", zdata);
+  m.assign ("cdata", cdata);
+  m.assign ("facecolor", facecolor);
+  m.assign ("facealpha", facealpha);
+  m.assign ("edgecolor", edgecolor);
+  m.assign ("linestyle", linestyle);
+  m.assign ("linewidth", linewidth);
+  m.assign ("marker", marker);
+  m.assign ("markeredgecolor", markeredgecolor);
+  m.assign ("markerface", markerfacecolor);
+  m.assign ("markersize", markersize);
   m.assign ("keylabel", keylabel);
 
   return m;
@@ -2380,6 +2420,26 @@
     retval = ydata;
   else if (name.compare ("zdata"))
     retval = zdata;
+  else if (name.compare ("cdata"))
+    retval = cdata;
+  else if (name.compare ("facecolor"))
+    retval = facecolor;
+  else if (name.compare ("facealpha"))
+    retval = facealpha;
+  else if (name.compare ("edgecolor"))
+    retval = edgecolor;
+  else if (name.compare ("linestyle"))
+    retval = linestyle;
+  else if (name.compare ("linewidth"))
+    retval = linewidth;
+  else if (name.compare ("marker"))
+    retval = marker;
+  else if (name.compare ("markeredgecolor"))
+    retval = markeredgecolor;
+  else if (name.compare ("markerfacecolor"))
+    retval = markerfacecolor;
+  else if (name.compare ("markersize"))
+    retval = markersize;
   else if (name.compare ("keylabel"))
     retval = keylabel;
   else
@@ -2396,6 +2456,16 @@
   m["xdata"] = Matrix ();
   m["ydata"] = Matrix ();
   m["zdata"] = Matrix ();
+  m["cdata"] = Matrix ();
+  m["facecolor"] = color_property();
+  m["facealpha"] = 1.0;
+  m["edgecolor"] = color_property("black");
+  m["linestyle"] = "-";
+  m["linewidth"] = 0.5;
+  m["marker"] = "none";
+  m["markeredgecolor"] = "auto";
+  m["markerfacecolor"] = "none";
+  m["markersize"] = 1;
   m["keylabel"] = "";
 
   return m;
--- graphics.h.in       2007-10-24 02:32:44.000000000 +0200
+++ graphics.h.in.new   2007-11-04 22:21:39.000000000 +0100
@@ -1698,6 +1698,16 @@
       octave_value xdata
       octave_value ydata
       octave_value zdata
+      octave_value cdata
+      color_property facecolor a
+      octave_value facealpha
+      color_property edgecolor a
+      octave_value linestyle
+      octave_value linewidth
+      octave_value marker
+      octave_value markeredgecolor
+      octave_value markerfacecolor
+      octave_value markersize
       octave_value keylabel
     END_PROPERTIES
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]