Graphics-PLplot
view release on metacpan or search on metacpan
# ($wx, $wy, $window ) = plcalc_world( $rx, $ry );
void
c_plcalc_world( rx, ry)
PLFLT rx
PLFLT ry
PREINIT:
PLFLT wx;
PLFLT wy;
PLINT window;
PPCODE:
c_plcalc_world( rx, ry, &wx, &wy, &window );
XPUSHs( sv_2mortal(newSVnv(wx)));
XPUSHs( sv_2mortal(newSVnv(wy)));
XPUSHs( sv_2mortal(newSViv(window)));
void
c_plclear()
c_plfontld( set )
PLINT set
# plgchr
void
c_plgchr()
PREINIT:
PLFLT p_def;
PLFLT p_ht;
PPCODE:
c_plgchr( &p_def, &p_ht );
XPUSHs( sv_2mortal(newSVnv(p_def)));
XPUSHs( sv_2mortal(newSVnv(p_ht)));
void
c_plgcol0(icol0)
PLINT icol0
PREINIT:
PLINT r;
PLINT g;
PLINT b;
PPCODE:
c_plgcol0( icol0, &r, &g, &b );
XPUSHs( sv_2mortal(newSViv(r)));
XPUSHs( sv_2mortal(newSViv(g)));
XPUSHs( sv_2mortal(newSViv(b)));
void
c_plgcolbg()
PREINIT:
PLINT r;
PLINT g;
PLINT b;
PPCODE:
c_plgcolbg( &r, &g, &b );
XPUSHs( sv_2mortal(newSViv(r)));
XPUSHs( sv_2mortal(newSViv(g)));
XPUSHs( sv_2mortal(newSViv(b)));
PLINT
plgcompression()
CODE:
plgcompression( &RETVAL );
OUTPUT:
OUTPUT:
RETVAL
void
c_plgdidev()
PREINIT:
PLFLT p_mar;
PLFLT p_aspect;
PLFLT p_jx;
PLFLT p_jy;
PPCODE:
c_plgdidev( &p_mar, &p_aspect, &p_jx, &p_jy );
XPUSHs( sv_2mortal(newSVnv(p_mar)));
XPUSHs( sv_2mortal(newSVnv(p_aspect)));
XPUSHs( sv_2mortal(newSVnv(p_jx)));
XPUSHs( sv_2mortal(newSVnv(p_jy)));
PLFLT
plgdiori()
CODE:
plgdiori( &RETVAL );
OUTPUT:
RETVAL
void
c_plgdiplt()
PREINIT:
PLFLT p_xmin;
PLFLT p_ymin;
PLFLT p_xmax;
PLFLT p_ymax;
PPCODE:
c_plgdiplt( &p_xmin, &p_ymin, &p_xmax, &p_ymax );
XPUSHs( sv_2mortal(newSVnv(p_xmin)));
XPUSHs( sv_2mortal(newSVnv(p_ymin)));
XPUSHs( sv_2mortal(newSVnv(p_xmax)));
XPUSHs( sv_2mortal(newSVnv(p_ymax)));
void
c_plgfam()
PREINIT:
PLINT fam;
PLINT num;
PLINT bmax;
PPCODE:
c_plgfam( &fam, &num, &bmax );
XPUSHs( sv_2mortal(newSViv(fam)));
XPUSHs( sv_2mortal(newSViv(num)));
XPUSHs( sv_2mortal(newSViv(bmax)));
char *
c_plgfnam()
PREINIT:
char ver[80];
void
c_plgpage()
PREINIT:
PLFLT xp;
PLFLT yp;
PLINT xleng;
PLINT yleng;
PLINT xoff;
PLINT yoff;
PPCODE:
c_plgpage( &xp, &yp, &xleng, &yleng, &xoff, &yoff);
XPUSHs( sv_2mortal(newSVnv(xp)));
XPUSHs( sv_2mortal(newSVnv(yp)));
XPUSHs( sv_2mortal(newSViv(xleng)));
XPUSHs( sv_2mortal(newSViv(yleng)));
XPUSHs( sv_2mortal(newSViv(xoff)));
XPUSHs( sv_2mortal(newSViv(yoff)));
void
plgra()
# How do we make it usable without PDL?
void
c_plgspa()
PREINIT:
PLFLT xmin;
PLFLT ymin;
PLFLT xmax;
PLFLT ymax;
PPCODE:
c_plgspa( &xmin, &ymin, &xmax, &ymax );
XPUSHs( sv_2mortal(newSVnv(xmin)));
XPUSHs( sv_2mortal(newSVnv(ymin)));
XPUSHs( sv_2mortal(newSVnv(xmax)));
XPUSHs( sv_2mortal(newSVnv(ymax)));
PLINT
c_plgstrm()
CODE:
RETVAL
# plgvpd
void
c_plgvpd()
PREINIT:
PLFLT p_xmin;
PLFLT p_xmax;
PLFLT p_ymin;
PLFLT p_ymax;
PPCODE:
c_plgvpd( &p_xmin, &p_xmax, &p_ymin, &p_ymax );
XPUSHs( sv_2mortal(newSVnv(p_xmin)));
XPUSHs( sv_2mortal(newSVnv(p_xmax)));
XPUSHs( sv_2mortal(newSVnv(p_ymin)));
XPUSHs( sv_2mortal(newSVnv(p_ymax)));
void
c_plgvpw()
PREINIT:
PLFLT p_xmin;
PLFLT p_xmax;
PLFLT p_ymin;
PLFLT p_ymax;
PPCODE:
c_plgvpw( &p_xmin, &p_xmax, &p_ymin, &p_ymax );
XPUSHs( sv_2mortal(newSVnv(p_xmin)));
XPUSHs( sv_2mortal(newSVnv(p_xmax)));
XPUSHs( sv_2mortal(newSVnv(p_ymin)));
XPUSHs( sv_2mortal(newSVnv(p_ymax)));
void
c_plgxax()
PREINIT:
PLINT digmax;
PLINT digits;
PPCODE:
c_plgxax( &digmax, &digits );
XPUSHs( sv_2mortal(newSViv(digmax)));
XPUSHs( sv_2mortal(newSViv(digits)));
void
c_plgyax()
PREINIT:
PLINT digmax;
PLINT digits;
PPCODE:
c_plgyax( &digmax, &digits );
XPUSHs( sv_2mortal(newSViv(digmax)));
XPUSHs( sv_2mortal(newSViv(digits)));
void
c_plgzax()
PREINIT:
PLINT digmax;
PLINT digits;
PPCODE:
c_plgzax( &digmax, &digits );
XPUSHs( sv_2mortal(newSViv(digmax)));
XPUSHs( sv_2mortal(newSViv(digits)));
void
c_plhist( data, datmin, datmax, nbin, oldwin )
PLFLT * data
PLFLT datmin
RETVAL
### The C specific routines
void
plgFileDevs()
PREINIT:
char ** menustr;
char ** devname;
int ndev;
PPCODE:
/* Guess at largest number of drivers !! */
menustr = get_mortalspace( 1024, 'v');
devname = get_mortalspace( 1024, 'v');
plgFileDevs(&menustr, &devname, &ndev);
XPUSHs( newRV_noinc( (SV*)unpack1Dchar( menustr, ndev) ));
XPUSHs( newRV_noinc( (SV*)unpack1Dchar( devname, ndev) ));
void
plgDevs()
PREINIT:
char ** menustr;
char ** devname;
int ndev;
PPCODE:
/* Guess at largest number of drivers !! */
menustr = get_mortalspace( 1024, 'v');
devname = get_mortalspace( 1024, 'v');
plgDevs(&menustr, &devname, &ndev);
XPUSHs( newRV_noinc( (SV*)unpack1Dchar( menustr, ndev) ));
XPUSHs( newRV_noinc( (SV*)unpack1Dchar( devname, ndev) ));
## plsKeyEH - XXXXX not yet
## plsButtonEH - XXXXX not yet
# Returns status and all the unprocessed contents of @ARGV in ref to array
void
plParseOpts( argv, mode )
char ** argv
PLINT mode
PREINIT:
int status;
PPCODE:
/* $ARGV[0] is not the program name in perl */
status = plParseOpts( &ix_argv, argv, mode | PL_PARSE_NOPROGRAM );
XPUSHs( sv_2mortal(newSViv(status) ));
XPUSHs( newRV_noinc( (SV*)unpack1Dchar( argv, ix_argv) ));
# plMergeOpts should be done by perl GetOpt::Long
# plGetCursor - return list of keyword value pairs
# If not translation to world coordinates is possible, they
# are not returned in the list
void
plGetCursor()
PREINIT:
PLGraphicsIn gin;
int status;
PPCODE:
status = plGetCursor( &gin );
XPUSHs(sv_2mortal(newSVpv( "dX", 0 )));
XPUSHs(sv_2mortal(newSVnv( gin.dX )));
XPUSHs(sv_2mortal(newSVpv( "dY", 0 )));
XPUSHs(sv_2mortal(newSVnv( gin.dY )));
XPUSHs(sv_2mortal(newSVpv( "pX", 0 )));
XPUSHs(sv_2mortal(newSVnv( gin.pX )));
XPUSHs(sv_2mortal(newSVpv( "pY", 0 )));
XPUSHs(sv_2mortal(newSVnv( gin.pY )));
if (status == 1 ) {
( run in 0.773 second using v1.01-cache-2.11-cpan-92ad3014f07 )