/usr/share/plplot_octave/support/__pl_fill.m is in octave-plplot 5.10.0+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | ## Copyright (C) 1998-2003 Joao Cardoso.
##
## This program 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 of the License, or (at your
## option) any later version.
##
## This program 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.
##
## This file is part of plplot_octave.
## __pl_fill(x, y, c)
##
## Draw filled 2-D polygons.
##
## FILL(X,Y,C) fills the 2-D polygon defined by vectors X and Y
## with the color specified by C. The vertices of the polygon
## are specified by pairs of components of X and Y. If necessary,
## the polygon is closed by connecting the last vertex to the first.
##
## If C is a single character string chosen from the list 'r','g','b',
## 'c','m','y','w','k', or an RGB row vector triple, [r g b], or a scalar
## in the range 0-15, the polygon is filled with the constant specified color.
function __pl_fill(x, y, c)
global __pl
strm = plgstrm+1;
if (isvector(x) & isvector(y))
if (columns(x) != 1)
x = x';
y = y';
endif
if (length(x) != length(y))
error("__pl_fill: x and y must have same size\n");
endif
plpsty(0); # solid fill
if (__pl.axis_st(strm) == 1)
xmin = __pl.axis(strm,1); xmax = __pl.axis(strm,2);
ymin = __pl.axis(strm,3); ymin = __pl.axis(strm,4);
else
xmin=min(x); xmax=max(x); ymin=min(y); ymax=max(y);
endif
if (!ishold)
plcol0(15);
__pl_plenv(min(x), max(x), min(y), max(y), 0, -1);
endif
if (ischar(c) & length(c) == 1)
## map to plplot color
coln = ['r','g','b','c','m','y','w','k'];
coli = [2, 4, 10, 12, 14, 3, 16, 1];
col = coli(find(c == coln))-1;
plcol0(col);
elseif (isscalar(c))
if (ceil(c) == c) #integer
plcol0(c);
else
plcol1(c);
endif
elseif (isvector(c) & length(c) == 3)
## FIXME -- color 15 became permanently set!
plscol0(15, c(1), c(2), c(3));
plcol0(15);
elseif (isvector(c) & length(x) == length(x))
## If C is a vector the same length as X and Y, its elements are
## scaled by CAXIS and used as indices into the current COLORMAP to
## specify colors at the vertices; the color within the polygon is
## obtained by bilinear interpolation in the vertex colors.
error("__pl_fill: gradient fill, not yet.\n");
else
error("__pl_fill: color ????.\n");
endif
plfill(x,y)
plflush;pleop;
endif
endfunction
|