The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

# functions of the module Graphics::Plotter

int
Plotter::arc(xc,yc,x0,y0,x1,y1)
	int xc
	int yc
	int x0
	int y0
	int x1
	int y1

int
Plotter::box(x0,y0,x1,y1)
	int x0
	int y0
	int x1
	int y1

int
Plotter::circle(x,y,r)
	int x
	int y
	int r

int
Plotter::closepl()

int
Plotter::cont(x,y)
	int x
	int y

int
Plotter::erase()

int
Plotter::label(s)
	const char * s;

int
Plotter::line(x0,y0,x1,y1)
	int x0
	int y0
	int x1
	int y1

int
Plotter::linemod(s)
	const char *s;

int
Plotter::move(x,y)
	int x
	int y

int
Plotter::openpl()

int
Plotter::point(x,y)
	int x
	int y

int
Plotter::space(x0,y0,x1,y1)
	int x0
	int y0
	int x1
	int y1

# additional functions in GNU libplot

# int ?_justify does not work in alabel

int
Plotter::alabel (x_justify, y_justify, s)
	char x_justify;
	char y_justify;
	const char * s;

int
Plotter::arcrel (dxc, dyc, dx0, dy0, dx1, dy1)
	int dxc
	int dyc
	int dx0
	int dy0
	int dx1
	int dy1

int
Plotter::bezier2 (x0, y0, x1, y1, x2, y2)
	int x0
	int y0
	int x1
	int y1
	int x2
	int y2

int
Plotter::bezier2rel (dx0, dy0, dx1, dy1, dx2, dy2)
	int dx0
	int dy0
	int dx1
	int dy1
	int dx2
	int dy2

int
Plotter::bezier3 (x0, y0, x1, y1, x2, y2, x3, y3)
	int x0
	int y0
	int x1
	int y1
	int x2
	int y2
	int x3
	int y3

int
Plotter::bezier3rel (dx0, dy0, dx1, dy1, dx2, dy2, dx3, dy3)
	int dx0
	int dy0
	int dx1
	int dy1
	int dx2
	int dy2
	int dx3
	int dy3

int
Plotter::bgcolor (red, green, blue)
	int red
	int green
	int blue

int
Plotter::bgcolorname (name)
	const char *	name

int
Plotter::boxrel (dx0, dy0, dx1, dy1)
	int dx0
	int dy0
	int dx1
	int dy1

int
Plotter::capmod (s)
	const char *	s

int
Plotter::circlerel (dx, dy, r)
	int dx
	int dy
	int r

int
Plotter::color (red, green, blue)
	int red
	int green
	int blue

int
Plotter::colorname (name)
	const char *	name

int
Plotter::contrel (x, y)
	int x
	int y

int
Plotter::ellarc (xc, yc, x0, y0, x1, y1)
	int xc
	int yc
	int x0
	int y0
	int x1
	int y1

int
Plotter::ellarcrel (dxc, dyc, dx0, dy0, dx1, dy1)
	int dxc
	int dyc
	int dx0
	int dy0
	int dx1
	int dy1

int
Plotter::ellipse (x, y, rx, ry, angle)
	int x
	int y
	int rx
	int ry
	int angle

int
Plotter::ellipserel (dx, dy, rx, ry, angle)
	int dx
	int dy
	int rx
	int ry
	int angle

int
Plotter::endpath ()

int
Plotter::fillcolor (red, green, blue)
	int red
	int green
	int blue

int
Plotter::fillcolorname (name)
	const char *	name

int
Plotter::fillmod(s)
	const char *	s

int
Plotter::filltype (level)
	int level

int
Plotter::flushpl ()

int
Plotter::fontname (s)
	const char *	s

int
Plotter::fontsize (size)
	int size

int
Plotter::havecap (s)
	const char *	s

int
Plotter::joinmod (s)
	const char *	s

int
Plotter::labelwidth (s)
	const char *	s

int
Plotter::linedash (dashes, offset)
	SV *		dashes
	int		offset
	CODE:
	int *dims, ndims, i;
	SV *bar;
	AV *array;

	if (!(SvROK(dashes) && SvTYPE(SvRV(dashes))==SVt_PVAV))
		croak("usage: pl_linedash(\\@array,$offset)");
	array = (AV *) SvRV(dashes);
	ndims = (int) av_len(array) + 1;
	dims = (int *) safemalloc(ndims * sizeof(int));
	if (dims == NULL) croak("Out of memory");
	for(i=0; i<ndims; ++i) {
		bar = *(av_fetch( array, i, 0 ));
		dims[i] = (int) SvIV(bar);
	}
	RETVAL=THIS->linedash(ndims,dims,offset);
	if (dims)
	    safefree(dims);
	OUTPUT:
	RETVAL

int
Plotter::linerel (dx0, dy0, dx1, dy1)
	int dx0
	int dy0
	int dx1
	int dy1

int
Plotter::linewidth (size)
	int size

int
Plotter::marker (x, y, type, size)
	int x
	int y
	int type
	int size

int
Plotter::markerrel (dx, dy, type, size)
	int dx
	int dy
	int type
	int size

int
Plotter::moverel (x, y)
	int x
	int y

FILE *
Plotter::outfile (newstream)
	FILE	*	newstream

int
Plotter::pencolor (red, green, blue)
	int red
	int green
	int blue

int
Plotter::pencolorname (name)
	const char *	name

int
Plotter::pointrel (dx, dy)
	int dx
	int dy

int
Plotter::restorestate ()

int
Plotter::savestate ()

int
Plotter::space2 (x0, y0, x1, y1, x2, y2)
	int x0
	int y0
	int x1
	int y1
	int x2
	int y2

int
Plotter::textangle (angle)
	int angle

# floating point counterparts to the above (all GNU additions)

double
Plotter::ffontname (s)
	const char *	s

double
Plotter::ffontsize (size)
	double size

double
Plotter::flabelwidth (s)
	const char *	s

double
Plotter::ftextangle (angle)
	double angle

int
Plotter::farc (xc, yc, x0, y0, x1, y1)
	double xc
	double yc
	double x0
	double y0
	double x1
	double y1

int
Plotter::farcrel (dxc, dyc, dx0, dy0, dx1, dy1)
	double dxc
	double dyc
	double dx0
	double dy0
	double dx1
	double dy1

int
Plotter::fbezier2 (x0, y0, x1, y1, x2, y2)
	double x0
	double y0
	double x1
	double y1
	double x2
	double y2

int
Plotter::fbezier2rel (dx0, dy0, dx1, dy1, dx2, dy2)
	double dx0
	double dy0
	double dx1
	double dy1
	double dx2
	double dy2

int
Plotter::fbezier3 (x0, y0, x1, y1, x2, y2, x3, y3)
	double x0
	double y0
	double x1
	double y1
	double x2
	double y2
	double x3
	double y3

int
Plotter::fbezier3rel (dx0, dy0, dx1, dy1, dx2, dy2, dx3, dy3)
	double dx0
	double dy0
	double dx1
	double dy1
	double dx2
	double dy2
	double dx3
	double dy3

int
Plotter::fbox (x0, y0, x1, y1)
	double x0
	double y0
	double x1
	double y1

int
Plotter::fboxrel (dx0, dy0, dx1, dy1)
	double dx0
	double dy0
	double dx1
	double dy1

int
Plotter::fcircle (x, y, r)
	double x
	double y
	double r

int
Plotter::fcirclerel (dx, dy, r)
	double dx
	double dy
	double r

int
Plotter::fcont (x, y)
	double x
	double y

int
Plotter::fcontrel (x, y)
	double x
	double y

int
Plotter::fellarc (xc, yc, x0, y0, x1, y1)
	double xc
	double yc
	double x0
	double y0
	double x1
	double y1

int
Plotter::fellarcrel (dxc, dyc, dx0, dy0, dx1, dy1)
	double dxc
	double dyc
	double dx0
	double dy0
	double dx1
	double dy1

int
Plotter::fellipse (x, y, rx, ry, angle)
	double x
	double y
	double rx
	double ry
	double angle

int
Plotter::fellipserel (dx, dy, rx, ry, angle)
	double dx
	double dy
	double rx
	double ry
	double angle

int
Plotter::fline (x0, y0, x1, y1)
	double x0
	double y0
	double x1
	double y1

int
Plotter::flinedash (dashes, offset)
	SV *		dashes
	double		offset
	CODE:
	double *dims;
	int ndims, i;
	SV *bar;
	AV *array;

	if (!(SvROK(dashes) && SvTYPE(SvRV(dashes))==SVt_PVAV))
		croak("usage: flinedash(\\@array,$offset)");
	array = (AV *) SvRV(dashes);
	ndims = (int) av_len(array) + 1;
	dims = (double *) safemalloc(ndims * sizeof(double));
	if (dims == NULL) croak("Out of memory");
	for(i=0; i<ndims; ++i) {
		bar = *(av_fetch( array, i, 0 ));
		dims[i] = (double) SvNV(bar);
	}
	RETVAL=THIS->flinedash(ndims,dims,offset);
	if (dims)
	    safefree(dims);
	OUTPUT:
	RETVAL

int
Plotter::flinerel (dx0, dy0, dx1, dy1)
	double dx0
	double dy0
	double dx1
	double dy1

int
Plotter::flinewidth (size)
	double size

int
Plotter::fmarker (x, y, type, size)
	double x
	double y
	int type
	double size

int
Plotter::fmarkerrel (dx, dy, type, size)
	double dx
	double dy
	int type
	double size

int
Plotter::fmove (x, y)
	double x
	double y

int
Plotter::fmoverel (x, y)
	double x
	double y

int
Plotter::fpoint (x, y)
	double x
	double y

int
Plotter::fpointrel (dx, dy)
	double dx
	double dy

int
Plotter::fspace (x0, y0, x1, y1)
	double x0
	double y0
	double x1
	double y1

int
Plotter::fspace2 (x0, y0, x1, y1, x2, y2)
	double x0
	double y0
	double x1
	double y1
	double x2
	double y2


# floating point operations with no integer counterpart (GNU additions)

int
Plotter::fconcat (m0, m1, m2, m3, m4, m5)
	double m0
	double m1
	double m2
	double m3
	double m4
	double m5

int
Plotter::fmiterlimit(limit)
	double limit

int
Plotter::frotate (theta)
	double theta

int
Plotter::fscale (x, y)
	double x
	double y

int
Plotter::ftranslate (x, y)
	double x
	double y