diff scripts/plot/shading.m @ 7109:5436efbf35e3

[project @ 2007-11-06 22:16:25 by jwe]
author jwe
date Tue, 06 Nov 2007 22:16:25 +0000
parents
children 0e63f1126f01
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/scripts/plot/shading.m
@@ -0,0 +1,63 @@
+
+## Copyright (C) 2006,2007  Kai Habel
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, write to the Free
+## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301, USA.
+
+## -*- texinfo -*-
+## @deftypefn {Function File}  shading (@var{type})
+## @deftypefnx {Function File}  shading (@var{ax}, ...)
+##
+## Sets the shading of surface or patch graphic objects. Valid arguments for
+## @var{type} are "flat", "interp", or "faceted".
+## If @var{ax} is given the shading is applied to axis @var{ax} instead of the 
+## current axis.
+##
+## @example
+## shading ("interp")
+## @end example
+##
+## @end deftypefn
+
+function shading(ax, mode)
+
+  if (nargin == 1)
+    mode = ax;
+    ax = gca();
+  end
+
+  if ((nargin !=1 ) && (nargin != 2))
+    print_usage();
+  end
+
+  obj = findobj(ax,"Type","patch");
+  obj = [obj; findobj(ax,"Type","surface")];
+
+  for n = 1 : length(obj)
+    h = obj(n); 
+    if strcmp(mode, "flat") 
+      set(h,"FaceColor","flat");
+      set(h,"EdgeColor","none");
+    elseif strcmp(mode,"interp")
+      set(h,"FaceColor","interp");
+      set(h,"EdgeColor","none");
+    elseif strcmp(mode,"faceted")
+      set(h,"FaceColor","flat");
+      set(h,"EdgeColor",[0 0 0]);
+    else
+      error("unknown argument")
+    endif
+  endfor
+endfunction