IUP
view release on metacpan or search on metacpan
lib/IUP/Internal/PPlot.xs.inc view on Meta::CPAN
# void IupPPlotInsertStrPoints(Ihandle* ih, int index, int sample_index, const char** x, float* y, int count);
# void IupPPlotInsertPoints(Ihandle* ih, int index, int sample_index, float *x, float *y, int count);
void
_IupPPlotInsertPoints(Ihandle* ih, int index, int sample_index, SV* xlist, SV* ylist)
INIT:
int pcount, xcount, ycount, i;
float * xpointers;
float * ypointers;
CODE:
#ifdef HAVELIB_IUP_PPLOT
xcount = (SvROK(xlist) && SvTYPE(SvRV(xlist))==SVt_PVAV) ? (1+av_len((AV *)SvRV(xlist))) : 0;
ycount = (SvROK(ylist) && SvTYPE(SvRV(ylist))==SVt_PVAV) ? (1+av_len((AV *)SvRV(ylist))) : 0;
pcount = (xcount>ycount) ? ycount : xcount;
if (pcount>0) {
xpointers = malloc( pcount*sizeof(float) );
ypointers = malloc( pcount*sizeof(float) );
for(i=0; i<pcount; i++) {
xpointers[i] = mySV2FLT(*av_fetch((AV *)SvRV(xlist), i, 0));
ypointers[i] = mySV2FLT(*av_fetch((AV *)SvRV(ylist), i, 0));
}
IupPPlotInsertPoints(ih,index,sample_index,xpointers,ypointers,pcount);
free(xpointers);
free(ypointers);
}
#endif
void
_IupPPlotInsertStrPoints(Ihandle* ih, int index, int sample_index, SV* xlist, SV* ylist)
INIT:
int pcount, xcount, ycount, i;
char ** xpointers;
float * ypointers;
CODE:
#ifdef HAVELIB_IUP_PPLOT
xcount = (SvROK(xlist) && SvTYPE(SvRV(xlist))==SVt_PVAV) ? (1+av_len((AV *)SvRV(xlist))) : 0;
ycount = (SvROK(ylist) && SvTYPE(SvRV(ylist))==SVt_PVAV) ? (1+av_len((AV *)SvRV(ylist))) : 0;
pcount = (xcount>ycount) ? ycount : xcount;
if (pcount>0) {
xpointers = malloc( pcount*sizeof(char*) );
ypointers = malloc( pcount*sizeof(float) );
for(i=0; i<pcount; i++) {
xpointers[i] = mySV2STR(*av_fetch((AV *)SvRV(xlist), i, 0));
ypointers[i] = mySV2FLT(*av_fetch((AV *)SvRV(ylist), i, 0));
}
IupPPlotInsertStrPoints(ih,index,sample_index,(const char **)xpointers,ypointers,pcount);
free(xpointers);
free(ypointers);
}
#endif
#### Original C function from <iup_pplot.h>
# void IupPPlotTransform(Ihandle* ih, float x, float y, int *ix, int *iy);
void
_IupPPlotTransform(ih,x,y);
Ihandle* ih;
float x;
float y
INIT:
int ix;
int iy;
PPCODE:
#ifdef HAVELIB_IUP_PPLOT
IupPPlotTransform(ih,x,y,&ix,&iy);
XPUSHs(sv_2mortal(newSViv(ix)));
XPUSHs(sv_2mortal(newSViv(iy)));
#endif
#### Original C function from <iup_pplot.h>
# void IupPPlotPaintTo(Ihandle *ih, void *cnv);
void
_IupPPlotPaintTo(ih,cnv)
Ihandle *ih;
void *cnv;
CODE:
#ifdef HAVELIB_IUP_PPLOT
IupPPlotPaintTo(ih,cnv);
#endif
( run in 0.438 second using v1.01-cache-2.11-cpan-5511b514fd6 )