octave-maintainers
[Top][All Lists]
Advanced

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

Re: things for 3.0


From: Shai Ayal
Subject: Re: things for 3.0
Date: Fri, 12 Oct 2007 15:40:35 +0200

On 10/12/07, David Bateman <address@hidden> wrote:
> Shai Ayal wrote:
> > On 10/12/07, David Bateman <address@hidden> wrote:
> >
> >> Shai Ayal wrote:
> >>
> >>> On 10/12/07, David Bateman <address@hidden> wrote:
> >>>
> >>>
> >>>> John W. Eaton wrote:
> >>>>
> >>>>
> >>>>> I'd like to do the following for 3.0.
> >>>>>
> >>>>>   * Update various README files.
> >>>>>
> >>>>>   * Update NEWS file.  There is no way we are going to try to mention
> >>>>>     all the changes since 2.0.17 or even 2.1.73, but we should mention
> >>>>>     important user-visible changes that could cause backward
> >>>>>     compatibility problems.  Are there additional items that we should
> >>>>>     mention?
> >>>>>
> >>>>>   * Update the refcard.
> >>>>>
> >>>>>   * Update installation instructions.
> >>>>>
> >>>>>   * Remove obsolete files (for example, is FLEX.patch still needed?)
> >>>>>
> >>>>>   * Any other similar items?
> >>>>>
> >>>>> As none of these items involve code in Octave itself, I think they
> >>>>> should be safe to do between 2.9.15 and 3.0 with little testing.
> >>>>>
> >>>>> Comments?
> >>>>>
> >>>>> jwe
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>> There is one handle graphics bug that should be addressed before 3.0.
> >>>> That is the multiple patch problem.. My test case for this issue is
> >>>> something like
> >>>>
> >>>> t1 = (1/16:1/8:1)'*2*pi;
> >>>> t2 = ((1/16:1/8:1)' + 1/32)*2*pi;
> >>>> x1 = sin(t1);
> >>>> y1 = cos(t1);
> >>>> x2 = sin(t2);
> >>>> y2 = cos(t2);
> >>>> h = patch([x1,x2],[y1,y2],cat (3,[0,0],[1,0],[0,1]));
> >>>> pause(1);
> >>>> set(h,'FaceColor','r');
> >>>>
> >>>> showing two patches drawn that are blue and green that can then both be
> >>>> changed to red using the handle.. I don't think this needs fixing for
> >>>> 2.9.15, but for 3.0 it definitely should be fixed.
> >>>>
> >>>>
> >>> I attach a patch for __patch__.m which fixes this bug.
> >>>
> >>> 2007-10-12  Shai Ayal <address@hidden>
> >>>
> >>>         * plot/__patch__.m: will now return handles of all patch objects 
> >>> created
> >>>
> >>>
> >>>
> >> No this isn't the solution... This is the behavior of the fill and fill3
> >> functions. The patch function returns a single handle to all of the
> >> patches.. I have a partially working patch to this issue and will try to
> >> sent it soon..
> >>
> >
> > So if I understand correctly, what the current patch.m does in your
> > test case is create two patch objects , and you wish for it to make
> > one patch object?
> >
> >
> Yes it is one patch object with two disjoint patched regions... The
> attached patch is more like what I see is needed, though the 4th demo
> still fails due to the fact that the color_property in graphics.cc can
> only have a single color value..

OK I think I understand what you are trying to do now. How does matlab
cope with this? can a matlab color property have multiple values?



> D.
>
> --
> David Bateman                                address@hidden
> Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph)
> Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob)
> 91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax)
>
> The information contained in this communication has been classified as:
>
> [x] General Business Information
> [ ] Motorola Internal Use Only
> [ ] Motorola Confidential Proprietary
>
>
> *** ./scripts/plot/__patch__.m.orig27   2007-10-12 11:18:47.946404929 +0200
> --- ./scripts/plot/__patch__.m  2007-10-12 15:30:34.206169880 +0200
> ***************
> *** 25,41 ****
>
>   ## Author: Kai Habel
>
> ! function h = __patch__ (p, varargin)
> !
>     if (nargin < 3)
> !     print_usage ();
>     endif
>
>     iarg = 1;
> !   have_x = have_z = have_c = false;
>     if (isnumeric (varargin{1}))
>       if (! isnumeric (varargin{2}))
> !       print_usage ();
>       endif
>
>       x = varargin{1};
> --- 25,43 ----
>
>   ## Author: Kai Habel
>
> ! function [h, fail] = __patch__ (p, varargin)
> !   fail = false;
>     if (nargin < 3)
> !     fail = true;
> !     return;
>     endif
>
>     iarg = 1;
> !   have_x = have_z = have_c = have_faces = false;
>     if (isnumeric (varargin{1}))
>       if (! isnumeric (varargin{2}))
> !       fail = true;
> !       return;
>       endif
>
>       x = varargin{1};
> ***************
> *** 49,57 ****
>         have_z = true;
>         iarg++;
>       endif
>     endif
>
> !   if (have_x && nargin > iarg)
>       if (isnumeric (varargin{iarg}))
>         c = varargin{iarg};
>         have_c = true;
> --- 51,85 ----
>         have_z = true;
>         iarg++;
>       endif
> +   elseif (strcmp (tolower (varargin{1}), "faces") ||
> +         strcmp (tolower (varargin{1}), "vertices"))
> +     if (! isnumeric (varargin{2}))
> +       fail = true;
> +       return;
> +     endif
> +
> +     if (strcmp (tolower (varargin{1}), "faces"))
> +       faces = varargin{2};
> +       if (strcmp (tolower (varargin{3}), "vertices"))
> +       vert = varargin{4};
> +       have_faces = true;
> +       endif
> +     elseif (strcmp (tolower (varargin{3}), "vertices"))
> +       vert = varargin{2};
> +       if (strcmp (tolower (varargin{3}), "faces"))
> +       faces = varargin{4};
> +       have_faces = true;
> +       endif
> +     endif
> +     if (!have_faces)
> +       fail = true;
> +       return;
> +     else
> +       iarg += 4;
> +     endif
>     endif
>
> !   if ((have_x || have_faces) && nargin > iarg)
>       if (isnumeric (varargin{iarg}))
>         c = varargin{iarg};
>         have_c = true;
> ***************
> *** 69,75 ****
>     endif
>
>     if (rem (nargin - iarg, 2) != 0)
> !     print_usage ();
>     endif
>
>     if (have_x)
> --- 97,104 ----
>     endif
>
>     if (rem (nargin - iarg, 2) != 0)
> !     fail = true;
> !     return;
>     endif
>
>     if (have_x)
> ***************
> *** 80,156 ****
>         z = z(:);
>         endif
>       endif
> -
>       [nr, nc] = size (x);
> !
> !     for i = 1 : nc
> !       h = __go_patch__ (p);
> !       ax = get (h, "parent");
> !       if (have_x)
> !       set (h, "xdata", x (:, i), "ydata", y (:, i));
> !       if (have_z)
> !         set (h, "zdata", z (:, i));
> !       endif
>         endif
>
> !       if (have_c)
> !       if (ndims (c) == 2 && ((nr > 3 && size (c, 2) == nc)
> !                              || (size (c, 1) > 1 && size (c, 2) == nc)))
> !         c2 = c (:, i);
> !       elseif (ndims (c) == 3)
> !         c2 = permute (c(:,i,:), [1, 3, 2]);
> !       else
> !         c2 = c;
> !       endif
>
> !       if (ischar (c2))
> !         set (h, "facecolor", c2);
> !       elseif (numel (c2) == 1)
> !         if (isnan (c))
> !           set (h, "facecolor", [1, 1, 1]);
> !           set (h, "cdata", c2);
> !         elseif (isnumeric (c2))
> !           ## Have color index.
> !           set (h, "facecolor", "flat");
> !           set (h, "cdata", c2);
> !           clim = get(ax, "clim");
> !           if (c2 < clim(1))
> !               set (ax, "clim", [c2, clim(2)])
> !           endif
> !           if (c2 > clim(2))
> !               set (ax, "clim", [clim(1), c2])
> !           endif
> !         else
> !           ## Unknown color value.
> !           error ("patch: color value not valid");
> !         endif
> !       elseif (numel (c2) == 3)
> !         ## Have rgb/rgba value.
> !         set (h, "facecolor", c2);
> !       else
> !         ## Color vector.
> !         if (length (c2) != length (x) || length (c2) != length (y))
> !           error ("patch: size of x, y, and c must be equal")
> !         else
> !           set (h, "facecolor", "interp");
> !           set(h, "cdata", c2);
> !           if (abs(max(c2) - min(c2)) < eps)
> !               set (ax, "clim", [c2(1)-1, c2(1)+1])
> !           else
> !               set (ax, "clim", [min(c2), max(c2)]);
> !           endif
> !         endif
>         endif
>         else
> !       set (h, "facecolor", [0, 1, 0]);
>         endif
>
> !       if (nargin > iarg + 1)
> !       set (h, varargin{iarg:end});
>         endif
> !     endfor
>     else
> !     error ("patch: not supported");
>     endif
>
>   endfunction
> --- 109,198 ----
>         z = z(:);
>         endif
>       endif
>       [nr, nc] = size (x);
> !     if (have_z)
> !       vert = [x(:), y(:), z(:)];
> !     else
> !       vert = [x(:), y(:)];
> !     endif
> !     faces = reshape (1:numel(x), size(x,2), size(x,1));
> !   elseif (have_faces)
> !     nr = size (faces, 2);
> !     nc = size (faces, 1);
> !     idx = faces .';
> !     for i = 1: nc
> !       t1 = isnan (idx (:,i));
> !       if (any (t1))
> !       t2 = find (t1(1:end-1) != t1(2:end))(1);
> !         idx(t1,i) = idx(t2,i);
>         endif
> +     endfor
> +     x = vert(:,1)(idx);
> +     y = vert(:,2)(idx);
> +     if (size(vert,2) > 2)
> +       have_z = true;
> +       z = vert(:,3)(idx);
> +     endif
> +   else
> +     error ("patch: not supported");
> +   endif
>
> !   h = __go_patch__ (p);
> !   ax = get (h, "parent");
>
> !   cargs = {};
> !   if (have_c)
> !     if (ischar (c))
> !       cargs{1} = "facecolor";
> !       cargs{2} = c;
> !     elseif (isvector(c) && numel(c) == nc)
> !       if (isnan (c))
> !       cargs{1} = "facecolor";
> !       cargs{2} = [1, 1, 1];
> !       cargs{3} = "cdata";
> !       cargs{4} = c;
> !       elseif (isnumeric (c))
> !       cargs{1} = "facecolor";
> !       cargs{2} = "flat";
> !       cargs{3} = "cdata";
> !       cargs{4} = c;
> !       clim = get(ax, "clim");
> !       if (c(1) < clim(1))
> !           set (ax, "clim", [c(1), clim(2)])
> !       endif
> !       if (c(1) > clim(2))
> !           set (ax, "clim", [clim(1), c(1)])
>         endif
>         else
> !       error ("patch: color value not valid");
>         endif
> +     elseif (size(c,ndims(c) == 3))
> +       cargs{1} = "facecolor";
> +       cargs{2} = c;
> +     else
> +       ## Color Vectors
>
> !       if (rows (c2) != rows (x) || rows (c2) != length (y))
> !       error ("patch: size of x, y, and c must be equal")
> !       else
> !       cargs{1} = "facecolor";
> !       cargs{2} = "interp";
> !       if (abs(max(c2(:)) - min(c2(:))) < eps)
> !           set (ax, "clim", [c2(1)-1, c2(1)+1])
> !       else
> !           set (ax, "clim", [min(c2(:)), max(c2(:))]);
> !       endif
>         endif
> !     endif
>     else
> !     cargs{1} = "facecolor";
> !     cargs{2} = [0, 1, 0];
>     endif
>
> +   set (h, "xdata", x, "ydata", y, "faces", faces, "vertices", vert, ...
> +        cargs{:}, varargin{iarg:end});
> +   if (have_z)
> +     set (h, "zdata", z);
> +   endif
> +
>   endfunction
> *** ./scripts/plot/patch.m.orig27       2007-10-12 11:10:14.440540401 +0200
> --- ./scripts/plot/patch.m      2007-10-12 12:56:55.638853220 +0200
> ***************
> *** 21,26 ****
> --- 21,27 ----
>   ## @deftypefn {Function File} {} patch ()
>   ## @deftypefnx {Function File} {} patch (@var{x}, @var{y}, @var{c})
>   ## @deftypefnx {Function File} {} patch (@var{x}, @var{y}, @var{c}, 
> @var{opts})
> + ## @deftypefnx {Function File} {} patch ('Faces', @var{f}, 'Vertices', 
> @var{v}, @dots{})
>   ## @deftypefnx {Function File} {} patch (@var{h}, @dots{})
>   ## Create patch object from @var{x} and @var{y} with color @var{c} and
>   ## insert in the current axes object.  Return handle to patch object.
> ***************
> *** 42,53 ****
>       oldh = gca ();
>       unwind_protect
>         axes (h);
> !       tmp = __patch__ (h, varargin{:});
>       unwind_protect_cleanup
>         axes (oldh);
>       end_unwind_protect
>     else
> !     tmp = __patch__ (gca (), varargin{:});
>     endif
>
>     if (nargout > 0)
> --- 43,58 ----
>       oldh = gca ();
>       unwind_protect
>         axes (h);
> !       [tmp, fail] = __patch__ (h, varargin{:});
>       unwind_protect_cleanup
>         axes (oldh);
>       end_unwind_protect
>     else
> !     [tmp, fail] = __patch__ (gca (), varargin{:});
> !   endif
> !
> !   if (fail)
> !     print_usage ();
>     endif
>
>     if (nargout > 0)
> ***************
> *** 55,57 ****
> --- 60,110 ----
>     endif
>
>   endfunction
> +
> + %!demo
> + %! ## Patches with same number of vertices
> + %! close all;
> + %! t1 = (1/16:1/8:1)'*2*pi;
> + %! t2 = ((1/16:1/8:1)' + 1/32)*2*pi;
> + %! x1 = sin(t1) - 0.8;
> + %! y1 = cos(t1);
> + %! x2 = sin(t2) + 0.8;
> + %! y2 = cos(t2);
> + %! patch([x1,x2],[y1,y2],'r');
> +
> + %!demo
> + %! ## Unclosed patch
> + %! close all;
> + %! t1 = (1/16:1/8:1)'*2*pi;
> + %! t2 = ((1/16:1/16:1)' + 1/32)*2*pi;
> + %! x1 = sin(t1) - 0.8;
> + %! y1 = cos(t1);
> + %! x2 = sin(t2) + 0.8;
> + %! y2 = cos(t2);
> + %! patch([[x1;NaN(8,1)],x2],[[y1;NaN(8,1)],y2],'r');
> +
> + %!demo
> + %! ## Specify vertices and faces separately
> + %! close all;
> + %! t1 = (1/16:1/8:1)'*2*pi;
> + %! t2 = ((1/16:1/16:1)' + 1/32)*2*pi;
> + %! x1 = sin(t1) - 0.8;
> + %! y1 = cos(t1);
> + %! x2 = sin(t2) + 0.8;
> + %! y2 = cos(t2);
> + %! vert = [x1, y1; x2, y2];
> + %! fac = [1:8,NaN(1,8);9:24];
> + %! patch('Faces',fac,'Vertices',vert,'FaceColor','r');
> +
> + %!demo
> + %! ## Property change on multiple patches
> + %! close all;
> + %! t1 = (1/16:1/8:1)'*2*pi;
> + %! t2 = ((1/16:1/8:1)' + 1/32)*2*pi;
> + %! x1 = sin(t1) - 0.8;
> + %! y1 = cos(t1);
> + %! x2 = sin(t2) + 0.8;
> + %! y2 = cos(t2);
> + %! h = patch([x1,x2],[y1,y2],cat (3,[0,0],[1,0],[0,1]));
> + %! pause (1);
> + %! set (h, 'FaceColor', 'r');
> *** ./scripts/plot/__go_draw_axes__.m.orig27    2007-10-11 20:15:53.000000000 
> +0200
> --- ./scripts/plot/__go_draw_axes__.m   2007-10-12 15:14:34.523787142 +0200
> ***************
> *** 427,543 ****
>          nd = 2;
>            cmap = parent_figure_obj.colormap;
>            clim = axis_obj.clim;
> !        data_idx++;
> !        is_image_data(data_idx) = false;
> !        parametric(data_idx) = false;
> !          titlespec{data_idx} = "title \"\"";
> !        usingclause{data_idx} = "";
> !          if (isfield (obj, "facecolor") && isfield (obj, "cdata"))
> !            if (strncmp (obj.facecolor, "none", 4))
> !            color = [1, 1, 1];
> !            elseif (strncmp (obj.facecolor, "flat", 4))
> !              r = 1 + round ((size (cmap, 1) - 1) * (obj.cdata - 
> clim(1))/(clim(2) - clim(1)));
> !              r = max (1, min (r, size (cmap, 1)));
> !            color = cmap(r,:);
> !            elseif (strncmp (obj.facecolor, "interp", 6))
> !              warning ("\"interp\" not supported, using 1st entry of cdata")
> !              r = 1 + round ((size (cmap, 1) - 1) * obj.cdata(1));
> !              r = max (1, min (r, size (cmap, 1)));
> !            color = cmap(r,:);
> !            else
> !            color = obj.facecolor;
> !            endif
> !          else
> !            color = [1, 0, 0];
> !          endif
> !
> !        if (have_newer_gnuplot)
> !          withclause{data_idx} = sprintf ("with filledcurve lc rgb 
> \"#%02x%02x%02x\"",round (255*color));
> !        else
> !          if (isequal (color, [0,0,0]))
> !            typ = -1;
> !          elseif (isequal (color, [1,0,0]))
> !            typ = 1;
> !          elseif (isequal (color, [0,1,0]))
> !            typ = 2;
> !          elseif (isequal (color, [0,0,1]))
> !            typ = 3;
> !          elseif (isequal (color, [1,0,1]))
> !            typ = 4;
> !          elseif (isequal (color, [0,1,1]))
> !            typ = 5;
> !          elseif (isequal (color, [1,1,1]))
> !            typ = -1;
> !          elseif (isequal (color, [1,1,0]))
> !            typ = 7;
> !          else
> !            typ = -1;
> !          endif
> !          withclause{data_idx} = sprintf ("with filledcurve lt %d", typ);
>          endif
>
> !        xdat = obj.xdata(:);
> !        ydat = obj.ydata(:);
>
> !        if (xautoscale)
> !            [xmin, xmax, xminp] = get_data_limits (xmin, xmax, xminp, xdat);
> !        endif
> !        if (yautoscale)
> !          [ymin, ymax, yminp] = get_data_limits (ymin, ymax, yminp, ydat);
> !        endif
> !        data{data_idx} = [xdat, ydat]';
> !        usingclause{data_idx} = "using ($1):($2)";
>
> !          ## patch outline
> !          data_idx++;
> !          is_image_data(data_idx) = false;
> !          parametric(data_idx) = false;
> !          titlespec{data_idx} = "title \"\"";
> !        usingclause{data_idx} = "";
> !          if (isfield (obj, "edgecolor"))
> !            if (strncmp (obj.edgecolor, "none", 4))
> !              color = [1, 1, 1];
> !            elseif (strncmp (obj.edgecolor, "flat", 4))
> !              warning ("\"flat\" for edgecolor not supported");
> !              color = [0, 0, 0];
> !            elseif (strncmp (obj.edgecolor, "interp", 6))
> !              warning ("\"interp\" for edgecolor not supported");
> !              color = [0, 0, 0];
>              else
> !            color = obj.edgecolor;
>              endif
> !          else
> !            color = [0, 0, 0];
> !          endif
> !        if (have_newer_gnuplot)
> !          withclause{data_idx} = sprintf ("with lines lc rgb 
> \"#%02x%02x%02x\"",round (255*color));
> !        else
> !          if (isequal (color, [0,0,0]))
> !            typ = -1;
> !          elseif (isequal (color, [1,0,0]))
> !            typ = 1;
> !          elseif (isequal (color, [0,1,0]))
> !            typ = 2;
> !          elseif (isequal (color, [0,0,1]))
> !            typ = 3;
> !          elseif (isequal (color, [1,0,1]))
> !            typ = 4;
> !          elseif (isequal (color, [0,1,1]))
> !            typ = 5;
> !          elseif (isequal (color, [1,1,1]))
> !            typ = -1;
> !          elseif (isequal (color, [1,1,0]))
> !            typ = 7;
>            else
> !            typ = -1;
>            endif
> -          withclause{data_idx} = sprintf ("with lines lt %d", typ);
> -        endif
>
> !          xdat = [xdat; xdat(1)];
> !        ydat = [ydat; ydat(1)];
> !        data{data_idx} = [xdat, ydat]';
> !        usingclause{data_idx} = "using ($1):($2)";
>
>         case "surface"
>           data_idx++;
> --- 427,574 ----
>          nd = 2;
>            cmap = parent_figure_obj.colormap;
>            clim = axis_obj.clim;
> !        [nr, nc] = size (obj.xdata);
> !
> !        if (strncmp (obj.facecolor, "flat", 4) ||
> !            strncmp (obj.facecolor, "interp", 6))
> !          cdat = obj.cdata;
>          endif
>
> !        for i = 1 : nc
> !          xcol = obj.xdata(:,i);
> !          ycol = obj.ydata(:,i);
>
> !          if (xautoscale)
> !              [xmin, xmax, xminp] = get_data_limits (xmin, xmax, xminp, 
> xcol);
> !          endif
> !          if (yautoscale)
> !            [ymin, ymax, yminp] = get_data_limits (ymin, ymax, yminp, ycol);
> !          endif
>
> !          if (! isnan (xcol) && ! isnan (ycol))
> !            ## Is the patch closed or not
> !            data_idx++;
> !            is_image_data(data_idx) = false;
> !            parametric(data_idx) = false;
> !              titlespec{data_idx} = "title \"\"";
> !            usingclause{data_idx} = "";
> !              if (isfield (obj, "facecolor") && isfield (obj, "cdata"))
> !                if (strncmp (obj.facecolor, "none", 4))
> !                color = [1, 1, 1];
> !
> !                elseif (strncmp (obj.facecolor, "flat", 4) ||
> !                      strncmp (obj.facecolor, "interp", 6))
> !                if (ndims (cdat) == 2 && ((nr > 3 && size (cdat, 2) == nc)
> !                              || (size (cdat, 1) > 1 && size (cdat, 2) == 
> nc)))
> !                  ccol = cdat (:, i);
> !                elseif (ndims (cdat) == 3)
> !                  ccol = permute (cdat (:, i, :), [1, 3, 2]);
> !                else
> !                  ccol = cdat;
> !                endif
> !                if (strncmp (obj.facecolor, "flat", 4))
> !                  r = 1 + round ((size (cmap, 1) - 1) * ...
> !                                 (ccol - clim(1))/(clim(2) - clim(1)));
> !                  r = max (1, min (r, size (cmap, 1)));
> !                  color = cmap(r,:);
> !                elseif (strncmp (obj.facecolor, "interp", 6))
> !                  warning ("\"interp\" not supported, using 1st entry of 
> cdata")
> !                  r = 1 + round ((size (cmap, 1) - 1) * ccol(1));
> !                  r = max (1, min (r, size (cmap, 1)));
> !                  color = cmap(r,:);
> !                endif
> !              else
> !                color = obj.facecolor;
> !              endif
> !              else
> !              color = [0, 1, 0];
> !              endif
> !
> !            if (have_newer_gnuplot)
> !              withclause{data_idx} = ...
> !              sprintf ("with filledcurve lc rgb \"#%02x%02x%02x\"", ...
> !                       round (255*color));
> !            else
> !              if (isequal (color, [0,0,0]))
> !                typ = -1;
> !              elseif (isequal (color, [1,0,0]))
> !                typ = 1;
> !              elseif (isequal (color, [0,1,0]))
> !                typ = 2;
> !              elseif (isequal (color, [0,0,1]))
> !                typ = 3;
> !              elseif (isequal (color, [1,0,1]))
> !                typ = 4;
> !              elseif (isequal (color, [0,1,1]))
> !                typ = 5;
> !              elseif (isequal (color, [1,1,1]))
> !                typ = -1;
> !              elseif (isequal (color, [1,1,0]))
> !                typ = 7;
> !              else
> !                typ = -1;
> !              endif
> !              withclause{data_idx} = sprintf ("with filledcurve lt %d", typ);
> !            endif
> !            data{data_idx} = [xcol, ycol]';
> !            usingclause{data_idx} = "using ($1):($2)";
> !          endif
> !
> !            ## patch outline
> !          data_idx++;
> !            is_image_data(data_idx) = false;
> !            parametric(data_idx) = false;
> !            titlespec{data_idx} = "title \"\"";
> !          usingclause{data_idx} = "";
> !            if (isfield (obj, "edgecolor"))
> !              if (strncmp (obj.edgecolor, "none", 4))
> !                color = [1, 1, 1];
> !              elseif (strncmp (obj.edgecolor, "flat", 4))
> !                warning ("\"flat\" for edgecolor not supported");
> !                color = [0, 0, 0];
> !              elseif (strncmp (obj.edgecolor, "interp", 6))
> !                warning ("\"interp\" for edgecolor not supported");
> !                color = [0, 0, 0];
> !              else
> !              color = obj.edgecolor;
> !              endif
>              else
> !              color = [0, 0, 0];
>              endif
> !          if (have_newer_gnuplot)
> !            withclause{data_idx} = ...
> !            sprintf ("with lines lc rgb \"#%02x%02x%02x\"", ...
> !                     round (255*color));
>            else
> !            if (isequal (color, [0,0,0]))
> !              typ = -1;
> !            elseif (isequal (color, [1,0,0]))
> !              typ = 1;
> !            elseif (isequal (color, [0,1,0]))
> !              typ = 2;
> !            elseif (isequal (color, [0,0,1]))
> !              typ = 3;
> !            elseif (isequal (color, [1,0,1]))
> !              typ = 4;
> !            elseif (isequal (color, [0,1,1]))
> !              typ = 5;
> !            elseif (isequal (color, [1,1,1]))
> !              typ = -1;
> !            elseif (isequal (color, [1,1,0]))
> !              typ = 7;
> !            else
> !              typ = -1;
> !            endif
> !            withclause{data_idx} = sprintf ("with lines lt %d", typ);
>            endif
>
> !          if (!isnan (xcol) && !isnan (ycol))
> !            data{data_idx} = [[xcol; xcol(1)], [ycol; ycol(1)]]';
> !          else
> !            data{data_idx} = [xcol, ycol]';
> !          endif
> !          usingclause{data_idx} = "using ($1):($2)";
> !        endfor
>
>         case "surface"
>           data_idx++;
> *** ./src/graphics.cc.orig27    2007-10-12 12:13:48.349403438 +0200
> --- ./src/graphics.cc   2007-10-12 12:12:26.097418890 +0200
> ***************
> *** 2123,2128 ****
> --- 2123,2130 ----
>       xdata (Matrix ()),
>       ydata (Matrix ()),
>       zdata (Matrix ()),
> +     faces (Matrix ()),
> +     vertices (Matrix ()),
>       facecolor (radio_values ("{flat}|none|interp")),
>       facealpha (1.0),
>       edgecolor (color_values(0, 0, 0), radio_values ("flat|none|interp")),
> ***************
> *** 2157,2162 ****
> --- 2159,2168 ----
>       set_ydata (val);
>     else if (name.compare ("zdata"))
>       set_zdata (val);
> +   else if (name.compare ("faces"))
> +     set_faces (val);
> +   else if (name.compare ("vertices"))
> +     set_vertices (val);
>     else if (name.compare ("facecolor"))
>       set_facecolor (val);
>     else if (name.compare ("facealpha"))
> ***************
> *** 2198,2203 ****
> --- 2204,2211 ----
>     m.assign ("xdata", xdata);
>     m.assign ("ydata", ydata);
>     m.assign ("zdata", zdata);
> +   m.assign ("faces", faces);
> +   m.assign ("vertices", vertices);
>     m.assign ("facecolor", facecolor);
>     m.assign ("facealpha", facealpha);
>     m.assign ("edgecolor", edgecolor);
> ***************
> *** 2232,2237 ****
> --- 2240,2249 ----
>       retval = ydata;
>     else if (name.compare ("zdata"))
>       retval = zdata;
> +   else if (name.compare ("faces"))
> +     retval = faces;
> +   else if (name.compare ("vertices"))
> +     retval = vertices;
>     else if (name.compare ("facecolor"))
>       retval = facecolor;
>     else if (name.compare ("facealpha"))
> ***************
> *** 2265,2270 ****
> --- 2277,2284 ----
>     m["xdata"] = Matrix ();
>     m["ydata"] = Matrix ();
>     m["zdata"] = Matrix ();
> +   m["faces"] = Matrix ();
> +   m["vertices"] = Matrix ();
>     m["facecolor"] = color_property();
>     m["facealpha"] = 1.0;
>     m["edgecolor"] = color_property("black");
> *** ./src/graphics.h.in.orig27  2007-10-12 12:13:57.788941113 +0200
> --- ./src/graphics.h.in 2007-10-12 12:13:18.041885776 +0200
> ***************
> *** 1600,1605 ****
> --- 1600,1607 ----
>         octave_value xdata
>         octave_value ydata
>         octave_value zdata
> +       octave_value faces
> +       octave_value vertices
>         color_property facecolor a
>         octave_value facealpha
>         color_property edgecolor a
>
>


reply via email to

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