# HG changeset patch # User jwe # Date 1194632140 0 # Node ID 5c121a8b40b5ec4d5372bae5c6044fdf1956000e # Parent 735086cfd405f05a1e2ee572b0a048d1922231e9 [project @ 2007-11-09 18:15:39 by jwe] diff -r 735086cfd405 -r 5c121a8b40b5 doc/ChangeLog --- a/doc/ChangeLog Fri Nov 09 18:01:45 2007 +0000 +++ b/doc/ChangeLog Fri Nov 09 18:15:40 2007 +0000 @@ -1,6 +1,6 @@ 2007-11-09 David Bateman - * interpreter/plot.txi: Document the new area function. + * interpreter/plot.txi: Document the new hidden and area functions. 2007-11-07 David Bateman diff -r 735086cfd405 -r 5c121a8b40b5 scripts/ChangeLog --- a/scripts/ChangeLog Fri Nov 09 18:01:45 2007 +0000 +++ b/scripts/ChangeLog Fri Nov 09 18:15:40 2007 +0000 @@ -9,6 +9,13 @@ 2007-11-09 David Bateman + * plot/hidden.m: New function. + * plot/Makefile.in (SOURCES): Add it here. + * plot/meshc.m, plot/mesh.m: Set facecolor to White for hidden + line removal. + * plot/__go_draw_axes__.m: If facecolor is white flag hidden line + removal and if it is "none" don't do hidden line removal. + * plot/legend.m: Also allow labels for surface and patch types. * plot/__bar__.m: Split into separate patch pbjects to allow setting of the legend. diff -r 735086cfd405 -r 5c121a8b40b5 scripts/plot/Makefile.in --- a/scripts/plot/Makefile.in Fri Nov 09 18:01:45 2007 +0000 +++ b/scripts/plot/Makefile.in Fri Nov 09 18:15:40 2007 +0000 @@ -83,6 +83,7 @@ gca.m \ gcf.m \ grid.m \ + hidden.m \ hist.m \ hold.m \ isfigure.m \ diff -r 735086cfd405 -r 5c121a8b40b5 scripts/plot/__go_draw_axes__.m --- a/scripts/plot/__go_draw_axes__.m Fri Nov 09 18:01:45 2007 +0000 +++ b/scripts/plot/__go_draw_axes__.m Fri Nov 09 18:15:40 2007 +0000 @@ -201,6 +201,7 @@ data_idx = 0; data = cell (); is_image_data = []; + hidden_removal = true; xminp = yminp = zminp = cminp = Inf; xmax = ymax = zmax = cmax = -Inf; @@ -341,7 +342,6 @@ data{data_idx} = [xdat, ydat, zdat]'; usingclause{data_idx} = "using ($1):($2):($3)"; fputs (plot_stream, "set parametric;\n"); - fputs (plot_stream, "set hidden3d;\n"); fputs (plot_stream, "set style data lines;\n"); fputs (plot_stream, "set surface;\n"); fputs (plot_stream, "unset contour;\n"); @@ -675,7 +675,6 @@ withclause{data_idx} = "with line palette"; fputs (plot_stream, "unset parametric;\n"); - fputs (plot_stream, "set hidden3d;\n"); fputs (plot_stream, "set style data lines;\n"); fputs (plot_stream, "set surface;\n"); fputs (plot_stream, "unset contour;\n"); @@ -691,8 +690,15 @@ || strncmp (obj.edgecolor, "interp", 6)); palette_data = []; + if (strncmp (obj.facecolor, "none", 4)) + hidden_removal = false; + endif + if (flat_interp_face - || (flat_interp_edge && strncmp (obj.facecolor, "none", 4))) + || (flat_interp_edge + && (strncmp (obj.facecolor, "none", 4) + || (isnumeric (obj.facecolor) + && all (obj.facecolor == 1))))) palette_data = [1:rows(surf_colormap); surf_colormap']; endif @@ -700,12 +706,16 @@ palette_data = [1:2; [obj.facecolor; obj.facecolor]']; endif - if (strncmp (obj.facecolor, "none", 4) + + if ((strncmp (obj.facecolor, "none", 4) + || (isnumeric (obj.facecolor) + && all (obj.facecolor == 1))) && isnumeric (obj.edgecolor)) palette_data = [1:2; [obj.edgecolor; obj.edgecolor]']; endif - if (strncmp (obj.facecolor, "none", 4)) + if (strncmp (obj.facecolor, "none", 4) + || (isnumeric (obj.facecolor) && all (obj.facecolor == 1))) elseif (flat_interp_face && strncmp (obj.edgecolor, "flat", 4)) fprintf (plot_stream, "set pm3d at s %s;\n", interp_str); else @@ -825,6 +835,12 @@ endfor + if (hidden_removal) + fputs (plot_stream, "set hidden3d;\n"); + else + fputs (plot_stream, "unset hidden3d;\n"); + endif + have_data = (! (isempty (data) && any (cellfun (@isempty, data)))); if (xautoscale && have_data) diff -r 735086cfd405 -r 5c121a8b40b5 scripts/plot/hidden.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/plot/hidden.m Fri Nov 09 18:15:40 2007 +0000 @@ -0,0 +1,79 @@ +## Copyright (C) 2007 Michael Goffioul +## +## This file is part of Octave. +## +## 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 3 of the License, 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, see +## . + +## -*- texinfo -*- +## @deftypefn {Function File} {} hidden (@var{mode}) +## @deftypefnx {Function File} {} hidden () +## Manipulation the mesh hidden line removal. Called with no argument +## the hidden line removal is toggled. The argument @var{mode} can be either +## 'on' or 'off' and the set of the hidden line removal is set accordingly. +## @seealso{mesh, meshc, surf} +## @end deftypefn + +## PKG_ADD: mark_as_command hidden + +function retval = hidden (mode) + + if (nargin == 0) + mode = "swap"; + elseif (nargin == 1); + if (ischar (mode)) + mode = tolower (mode); + if (! strcmp (mode, "on") && ! strcmp (mode, "off")) + error ("hidden: mode expected to be 'on' or 'off'"); + endif + else + error ("hidden: expecting mode to be a string"); + endif + else + print_usage (); + endif + + for h = get (gca (), "children"); + htype = lower (get (h, "type")); + if (strcmp (htype, "surface")) + fc = get (h, "facecolor"); + if ((! ischar (fc) && is_white (fc)) + || (ischar (fc) && strcmp (fc, "none"))) + switch (mode) + case "on" + set (h, "facecolor", "w"); + case "off" + set (h, "facecolor", "none"); + case "swap" + if (ischar (fc)) + set (h, "facecolor", "w"); + mode = "on"; + else + set (h, "facecolor", "none"); + mode = "off"; + endif + endswitch + endif + endif + endfor + + if (nargout > 0) + retval = mode; + endif + +endfunction + +function retval = is_white (color) + retval = all (color == 1); +endfunction diff -r 735086cfd405 -r 5c121a8b40b5 scripts/plot/mesh.m --- a/scripts/plot/mesh.m Fri Nov 09 18:01:45 2007 +0000 +++ b/scripts/plot/mesh.m Fri Nov 09 18:15:40 2007 +0000 @@ -38,7 +38,7 @@ ax = get (tmp, "parent"); - set (tmp, "facecolor", "none"); + set (tmp, "facecolor", "w"); set (tmp, "edgecolor", "flat"); if (! ishold ()) diff -r 735086cfd405 -r 5c121a8b40b5 scripts/plot/meshc.m --- a/scripts/plot/meshc.m Fri Nov 09 18:01:45 2007 +0000 +++ b/scripts/plot/meshc.m Fri Nov 09 18:15:40 2007 +0000 @@ -35,7 +35,7 @@ ax = get (tmp, "parent"); - set (tmp, "facecolor", "none"); + set (tmp, "facecolor", "w"); set (tmp, "edgecolor", "flat"); if (! ishold ())