#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#include <iup.h>
#include <cd.h>
#include <cdsvg.h>
#include <cdps.h>
#include <cdemf.h>
#include <cddxf.h>
#ifdef HAVELIB_IUPCD
#include <cdiup.h>
#endif
/* macros for processing args in fuctions with variable arg list, e.g. 'func(...)' */
#define myST2IHN(a) (items>(a)) && (SvIOK(ST(a))) ? INT2PTR(Ihandle*, SvIVX(ST(a))) : NULL;
#define myST2STR(a) (items>(a)) && (SvPOK(ST(a))) ? SvPVX(ST(a)) : NULL;
#define myST2INT(a) (items>(a)) && (SvIOK(ST(a))) ? SvIVX(ST(a)) : 0;
/* convert 'SV' to 'Ihandle*' + do undef->NULL conversion */
#define mySV2IHN(a) (SvIOK(a) ? INT2PTR(Ihandle *, SvIVX(a)) : NULL)
cdCanvas* ref2cnv(SV* ref) {
HV* h;
SV** s;
if ((h = (HV*)(SvRV(ref))) == NULL) return NULL;
if ((s = hv_fetchs(h, "!int!cnvhandle", 0)) != NULL) return INT2PTR(cdCanvas*,SvIVX(*s));
return NULL;
}
MODULE = IUP::Internal::Canvas PACKAGE = IUP::Internal::Canvas
# http://perldoc.perl.org/perlxs.html
# http://perldoc.perl.org/perlxstut.html
### special internal functions ###
cdCanvas*
_cdCreateCanvas_CD_IUP(ih)
Ihandle* ih;
CODE:
#ifdef HAVELIB_IUPCD
RETVAL = cdCreateCanvas(CD_IUP, ih);
#else
warn("cdCreateCanvas() not available");
RETVAL = NULL;
#endif
OUTPUT:
RETVAL
cdCanvas*
_cdCreateCanvas_FILE(format, params)
char* format;
char* params;
CODE:
if (strcmp(format,"SVG") == 0) RETVAL = cdCreateCanvas(CD_SVG, params);
else if (strcmp(format,"PS" ) == 0) RETVAL = cdCreateCanvas(CD_PS, params);
else if (strcmp(format,"EMF") == 0) RETVAL = cdCreateCanvas(CD_EMF, params);
else if (strcmp(format,"DXF") == 0) RETVAL = cdCreateCanvas(CD_DXF, params);
/*xxxCHECKLATER add all file formats */
/* WMF */
/* DGN */
/* CGM */
/* METAFILE */
/* DEBUG */
/* PICTURE? */
/* PRINTER? */
/* CLIPBOARD? */
else RETVAL = NULL;
OUTPUT:
RETVAL
### generated part - start ###
#### Original C function from <.../cd/include/cd.h>
# char* cdVersion(void);
char*
cdVersion(pkg)
SV* pkg;
CODE:
RETVAL = cdVersion();
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# char* cdVersionDate(void);
char*
cdVersionDate(pkg)
SV* pkg;
CODE:
RETVAL = cdVersionDate();
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdVersionNumber(void);
int
cdVersionNumber(pkg)
SV* pkg;
CODE:
RETVAL = cdVersionNumber();
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# cdCanvas* cdCreateCanvas(cdContext *context, void *data);
cdCanvas*
cdCreateCanvas(context,data)
cdContext* context;
void* data;
CODE:
RETVAL = cdCreateCanvas(context,data);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# cdCanvas* cdCreateCanvasf(cdContext *context, const char* format, ...);
cdCanvas*
cdCreateCanvasf(context,format,...)
cdContext* context;
const char* format;
CODE:
RETVAL = cdCreateCanvasf(context,format);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdKillCanvas(cdCanvas* canvas);
void
cdKillCanvas(canvas)
SV* canvas;
CODE:
cdKillCanvas(ref2cnv(canvas));
#### Original C function from <.../cd/include/cd.h>
# cdContext* cdCanvasGetContext(cdCanvas* canvas);
cdContext*
cdGetContext(canvas)
SV* canvas;
CODE:
RETVAL = cdCanvasGetContext(ref2cnv(canvas));
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasActivate(cdCanvas* canvas);
int
cdActivate(canvas)
SV* canvas;
CODE:
RETVAL = cdCanvasActivate(ref2cnv(canvas));
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasDeactivate(cdCanvas* canvas);
void
cdDeactivate(canvas)
SV* canvas;
CODE:
cdCanvasDeactivate(ref2cnv(canvas));
#### Original C function from <.../cd/include/cd.h>
# int cdUseContextPlus(int use);
#xxxTODO - support later, add some ifdefs
#int
#cdUseContextPlus(use)
# int use;
# CODE:
# RETVAL = cdUseContextPlus(use);
# OUTPUT:
# RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdInitContextPlus(void);
#xxxTODO - support later, add some ifdefs
#void
#cdInitContextPlus()
# CODE:
# cdInitContextPlus();
#### Original C function from <.../cd/include/cd.h>
# int cdContextRegisterCallback(cdContext *context, int cb, cdCallback func);
# cd.ContextRegisterCallback(ctx, cb: number, func: function) -> (status: number) [in Lua]
#xxxTODO - cd callbacks? maybe later
#int
#cdContextRegisterCallback(context,cb,func)
# cdContext* context;
# int cb;
# cdCallback func;
# CODE:
# RETVAL = cdContextRegisterCallback(context,cb,func);
# OUTPUT:
# RETVAL
#### Original C function from <.../cd/include/cd.h>
# unsigned long cdContextCaps(cdContext *context);
unsigned long
cdContextCaps(context)
cdContext* context;
CODE:
RETVAL = cdContextCaps(context);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasSimulate(cdCanvas* canvas, int mode);
int
cdSimulate(canvas,mode)
SV* canvas;
int mode;
CODE:
RETVAL = cdCanvasSimulate(ref2cnv(canvas),mode);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasFlush(cdCanvas* canvas);
void
cdFlush(canvas)
SV* canvas;
CODE:
cdCanvasFlush(ref2cnv(canvas));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasClear(cdCanvas* canvas);
void
cdClear(canvas)
SV* canvas;
CODE:
cdCanvasClear(ref2cnv(canvas));
#### Original C function from <.../cd/include/cd.h>
# cdState* cdCanvasSaveState(cdCanvas* canvas);
cdState*
cdSaveState(canvas)
SV* canvas;
CODE:
RETVAL = cdCanvasSaveState(ref2cnv(canvas));
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasRestoreState(cdCanvas* canvas, cdState* state);
void
cdRestoreState(canvas,state__)
SV* canvas;
cdState* state__;
CODE:
cdCanvasRestoreState(ref2cnv(canvas),state__);
#### Original C function from <.../cd/include/cd.h>
# void cdReleaseState(cdState* state);
void
cdReleaseState(state)
cdState* state;
CODE:
cdReleaseState(state);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasSetAttribute(cdCanvas* canvas, const char* name, char* data);
void
cdSetAttribute(canvas,name,data)
SV* canvas;
const char* name;
char* data;
CODE:
cdCanvasSetAttribute(ref2cnv(canvas),name,data);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasSetfAttribute(cdCanvas* canvas, const char* name, const char* format, ...);
void
cdSetfAttribute(canvas,name,format,...)
SV* canvas;
const char* name;
const char* format;
CODE:
cdCanvasSetfAttribute(ref2cnv(canvas),name,format);
#### Original C function from <.../cd/include/cd.h>
# char* cdCanvasGetAttribute(cdCanvas* canvas, const char* name);
char*
cdGetAttribute(canvas,name)
SV* canvas;
const char* name;
CODE:
RETVAL = cdCanvasGetAttribute(ref2cnv(canvas),name);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasPlay(cdCanvas* canvas, cdContext *context, int xmin, int xmax, int ymin, int ymax, void *data);
int
cdPlay(canvas,context,xmin,xmax,ymin,ymax,data)
SV* canvas;
cdContext* context;
int xmin;
int xmax;
int ymin;
int ymax;
void* data;
CODE:
RETVAL = cdCanvasPlay(ref2cnv(canvas),context,xmin,xmax,ymin,ymax,data);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetSize(cdCanvas* canvas, int *width, int *height, double *width_mm, double *height_mm);
# canvas:GetSize() -> (width, height, mm_width, mm_height: number) [in Lua]
#xxx DONE
void
cdGetSize(canvas,width,height,width_mm,height_mm)
SV* canvas;
INIT:
int width;
int height;
double width_mm;
double height_mm;
PPCODE:
cdCanvasGetSize(ref2cnv(canvas),&width,&height,&width_mm,&height_mm);
XPUSHs(sv_2mortal(newSViv(width)));
XPUSHs(sv_2mortal(newSViv(height)));
XPUSHs(sv_2mortal(newSVnv(width_mm)));
XPUSHs(sv_2mortal(newSVnv(height_mm)));
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasUpdateYAxis(cdCanvas* canvas, int* y);
# canvas:UpdateYAxis(yc: number) -> (yr: number) [in Lua]
#xxx DONE - returns updated value (does not change param value)
int
cdUpdateYAxis(canvas,y)
SV* canvas;
int y;
CODE:
int tmpy = y;
RETVAL = cdCanvasUpdateYAxis(ref2cnv(canvas),&tmpy);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# double cdfCanvasUpdateYAxis(cdCanvas* canvas, double* y);
#xxx DONE (maybe not needed)
double
cdfUpdateYAxis(canvas,y)
SV* canvas;
double y;
CODE:
double tmpy;
RETVAL = cdfCanvasUpdateYAxis(ref2cnv(canvas),&tmpy);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasYAxisMode(cdCanvas* canvas, int invert);
int
cdYAxisMode(canvas,invert)
SV* canvas;
int invert;
CODE:
RETVAL = cdCanvasYAxisMode(ref2cnv(canvas),invert);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasInvertYAxis(cdCanvas* canvas, int y);
int
cdInvertYAxis(canvas,y)
SV* canvas;
int y;
CODE:
RETVAL = cdCanvasInvertYAxis(ref2cnv(canvas),y);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# double cdfCanvasInvertYAxis(cdCanvas* canvas, double y);
double
cdfInvertYAxis(canvas,y)
SV* canvas;
double y;
CODE:
RETVAL = cdfCanvasInvertYAxis(ref2cnv(canvas),y);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasMM2Pixel(cdCanvas* canvas, double mm_dx, double mm_dy, int *dx, int *dy);
# canvas:MM2Pixel(mm_dx, mm_dy: number) -> (dx, dy: number) [in Lua]
#xxx DONE
void
cdMM2Pixel(canvas,mm_dx,mm_dy)
SV* canvas;
double mm_dx;
double mm_dy;
INIT:
int rv;
int dx;
int dy;
PPCODE:
cdCanvasMM2Pixel(ref2cnv(canvas),mm_dx,mm_dy,&dx,&dy);
XPUSHs(sv_2mortal(newSViv(dx)));
XPUSHs(sv_2mortal(newSViv(dy)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPixel2MM(cdCanvas* canvas, int dx, int dy, double *mm_dx, double *mm_dy);
# canvas:Pixel2MM(dx, dy: number) -> (mm_dx, mm_dy: number) [in Lua]
#xxx DONE
void
cdPixel2MM(canvas,dx,dy)
SV* canvas;
int dx;
int dy;
INIT:
double mm_dx;
double mm_dy;
PPCODE:
cdCanvasPixel2MM(ref2cnv(canvas),dx,dy,&mm_dx,&mm_dy);
XPUSHs(sv_2mortal(newSVnv(mm_dx)));
XPUSHs(sv_2mortal(newSVnv(mm_dy)));
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasMM2Pixel(cdCanvas* canvas, double mm_dx, double mm_dy, double *dx, double *dy);
# canvas:fMM2Pixel(mm_dx, mm_dy: number) -> (dx, dy: number) [in Lua]
#xxx DONE
void
cdfMM2Pixel(canvas,mm_dx,mm_dy)
SV* canvas;
double mm_dx;
double mm_dy;
INIT:
double dx;
double dy;
PPCODE:
cdfCanvasMM2Pixel(ref2cnv(canvas),mm_dx,mm_dy,&dx,&dy);
XPUSHs(sv_2mortal(newSVnv(dx)));
XPUSHs(sv_2mortal(newSVnv(dy)));
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasPixel2MM(cdCanvas* canvas, double dx, double dy, double *mm_dx, double *mm_dy);
# canvas:fPixel2MM(dx, dy: number) -> (mm_dx, mm_dy: number) [in Lua]
#xxx DONE
void
cdfPixel2MM(canvas,dx,dy,mm_dx,mm_dy)
SV* canvas;
double dx;
double dy;
INIT:
double mm_dx;
double mm_dy;
PPCODE:
cdfCanvasPixel2MM(ref2cnv(canvas),dx,dy,&mm_dx,&mm_dy);
XPUSHs(sv_2mortal(newSVnv(mm_dx)));
XPUSHs(sv_2mortal(newSVnv(mm_dy)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasOrigin(cdCanvas* canvas, int x, int y);
void
cdOrigin(canvas,x,y)
SV* canvas;
int x;
int y;
CODE:
cdCanvasOrigin(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasOrigin(cdCanvas* canvas, double x, double y);
void
cdfOrigin(canvas,x,y)
SV* canvas;
double x;
double y;
CODE:
cdfCanvasOrigin(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetOrigin(cdCanvas* canvas, int *x, int *y);
# canvas:GetOrigin() -> (x, y: number) [in Lua]
#xxx DONE
void
cdGetOrigin(canvas)
SV* canvas;
INIT:
int x;
int y;
PPCODE:
cdCanvasGetOrigin(ref2cnv(canvas),&x,&y);
XPUSHs(sv_2mortal(newSViv(x)));
XPUSHs(sv_2mortal(newSViv(y)));
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasGetOrigin(cdCanvas* canvas, double *x, double *y);
# canvas:fGetOrigin() -> (x, y: number) [in Lua]
#xxx DONE
void
cdfGetOrigin(canvas)
SV* canvas;
INIT:
double x;
double y;
PPCODE:
cdfCanvasGetOrigin(ref2cnv(canvas),&x,&y);
XPUSHs(sv_2mortal(newSVnv(x)));
XPUSHs(sv_2mortal(newSVnv(y)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasTransform(cdCanvas* canvas, const double* matrix);
# canvas:Transform(matrix: table) [in Lua]
#xxxTODO/important (matrix)
void
cdTransform(canvas,matrix)
SV* canvas;
SV* matrix;
INIT:
double tmpmatrix[6];
CODE:
/* xxxTODO call:SV2transf_matrix(matrix,&tmpmatrix) */
/* xxxTODO matrix -> tmpmatrix (how will be 2x3 matrix represented?) */
cdCanvasTransform(ref2cnv(canvas),tmpmatrix);
#### Original C function from <.../cd/include/cd.h>
# double* cdCanvasGetTransform(cdCanvas* canvas);
# canvas:GetTransformation() -> (matrix: table) [in Lua]
#xxxTODO/important (matrix)
void
cdGetTransform(canvas)
SV* canvas;
INIT:
double *matrix;
PPCODE:
matrix = cdCanvasGetTransform(ref2cnv(canvas));
/* xxxTODO matrix > retval array (how will be 2x3 matrix represented?) */
/* xxxTODO call:transf_matrix2SV(matrix) */
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasTransformMultiply(cdCanvas* canvas, const double* matrix);
# canvas:TransformMultiply(matrix: table) [in Lua]
#xxxTODO/important (matrix)
void
cdTransformMultiply(canvas,matrix)
SV* canvas;
SV* matrix;
INIT:
double tmpmatrix[6];
CODE:
/* xxxTODO matrix -> tmpmatrix (how will be 2x3 matrix represented?) */
/* xxxTODO call:SV2transf_matrix(matrix,&tmpmatrix) */
cdCanvasTransformMultiply(ref2cnv(canvas),tmpmatrix);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasTransformRotate(cdCanvas* canvas, double angle);
void
cdTransformRotate(canvas,angle)
SV* canvas;
double angle;
CODE:
cdCanvasTransformRotate(ref2cnv(canvas),angle);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasTransformScale(cdCanvas* canvas, double sx, double sy);
void
cdTransformScale(canvas,sx,sy)
SV* canvas;
double sx;
double sy;
CODE:
cdCanvasTransformScale(ref2cnv(canvas),sx,sy);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasTransformTranslate(cdCanvas* canvas, double dx, double dy);
void
cdTransformTranslate(canvas,dx,dy)
SV* canvas;
double dx;
double dy;
CODE:
cdCanvasTransformTranslate(ref2cnv(canvas),dx,dy);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasTransformPoint(cdCanvas* canvas, int x, int y, int *tx, int *ty);
# canvas:TransformPoint(x, y: number) -> (tx, ty: number) [in Lua]
#xxx DONE
void
cdTransformPoint(canvas,x,y)
SV* canvas;
int x;
int y;
INIT:
int tx;
int ty;
PPCODE:
cdCanvasTransformPoint(ref2cnv(canvas),x,y,&tx,&ty);
XPUSHs(sv_2mortal(newSViv(tx)));
XPUSHs(sv_2mortal(newSViv(ty)));
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasTransformPoint(cdCanvas* canvas, double x, double y, double *tx, double *ty);
# canvas:fTransformPoint(x, y: number) -> (tx, ty: number) [in Lua]
#xxx DONE
void
cdfTransformPoint(canvas,x,y)
SV* canvas;
double x;
double y;
INIT:
double tx;
double ty;
PPCODE:
cdfCanvasTransformPoint(ref2cnv(canvas),x,y,&tx,&ty);
XPUSHs(sv_2mortal(newSVnv(tx)));
XPUSHs(sv_2mortal(newSVnv(ty)));
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasClip(cdCanvas* canvas, int mode);
int
cdClip(canvas,mode)
SV* canvas;
int mode;
CODE:
RETVAL = cdCanvasClip(ref2cnv(canvas),mode);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasClipArea(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax);
void
cdClipArea(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
int xmin;
int xmax;
int ymin;
int ymax;
CODE:
cdCanvasClipArea(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasGetClipArea(cdCanvas* canvas, int *xmin, int *xmax, int *ymin, int *ymax);
# canvas:GetClipArea() -> (xmin, xmax, ymin, ymax, status: number) [in Lua]
#xxx DONE
void
cdGetClipArea(canvas)
SV* canvas;
INIT:
int xmin;
int xmax;
int ymin;
int ymax;
int status;
PPCODE:
status = cdCanvasGetClipArea(ref2cnv(canvas),&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSViv(xmin)));
XPUSHs(sv_2mortal(newSViv(xmax)));
XPUSHs(sv_2mortal(newSViv(ymin)));
XPUSHs(sv_2mortal(newSViv(ymax)));
XPUSHs(sv_2mortal(newSViv(status)));
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasClipArea(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax);
void
cdfClipArea(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
cdfCanvasClipArea(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# int cdfCanvasGetClipArea(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax);
# canvas:GetClipArea() -> (xmin, xmax, ymin, ymax, status: number) [in Lua]
#xxx DONE
void
cdfGetClipArea(canvas)
SV* canvas;
INIT:
int status;
double xmin;
double xmax;
double ymin;
double ymax;
PPCODE:
status = cdfCanvasGetClipArea(ref2cnv(canvas),&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSVnv(xmin)));
XPUSHs(sv_2mortal(newSVnv(xmax)));
XPUSHs(sv_2mortal(newSVnv(ymin)));
XPUSHs(sv_2mortal(newSVnv(ymax)));
XPUSHs(sv_2mortal(newSVnv(status)));
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasIsPointInRegion(cdCanvas* canvas, int x, int y);
int
cdIsPointInRegion(canvas,x,y)
SV* canvas;
int x;
int y;
CODE:
RETVAL = cdCanvasIsPointInRegion(ref2cnv(canvas),x,y);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasOffsetRegion(cdCanvas* canvas, int x, int y);
void
cdOffsetRegion(canvas,x,y)
SV* canvas;
int x;
int y;
CODE:
cdCanvasOffsetRegion(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetRegionBox(cdCanvas* canvas, int *xmin, int *xmax, int *ymin, int *ymax);
# canvas:GetRegionBox() -> (xmin, xmax, ymin, ymax, status: number) [in Lua]
#xxx DONE
void
cdGetRegionBox(canvas)
SV* canvas;
INIT:
int status = 4; /* inspired by Lua */
int xmin;
int xmax;
int ymin;
int ymax;
PPCODE:
cdCanvasGetRegionBox(ref2cnv(canvas),&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSViv(xmin)));
XPUSHs(sv_2mortal(newSViv(xmax)));
XPUSHs(sv_2mortal(newSViv(ymin)));
XPUSHs(sv_2mortal(newSViv(ymax)));
XPUSHs(sv_2mortal(newSViv(status)));
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasRegionCombineMode(cdCanvas* canvas, int mode);
int
cdRegionCombineMode(canvas,mode)
SV* canvas;
int mode;
CODE:
RETVAL = cdCanvasRegionCombineMode(ref2cnv(canvas),mode);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPixel(cdCanvas* canvas, int x, int y, long color);
void
cdPixel(canvas,x,y,color)
SV* canvas;
int x;
int y;
long color;
CODE:
cdCanvasPixel(ref2cnv(canvas),x,y,color);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasMark(cdCanvas* canvas, int x, int y);
void
cdMark(canvas,x,y)
SV* canvas;
int x;
int y;
CODE:
cdCanvasMark(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasBegin(cdCanvas* canvas, int mode);
void
cdBegin(canvas,mode)
SV* canvas;
int mode;
CODE:
cdCanvasBegin(ref2cnv(canvas),mode);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPathSet(cdCanvas* canvas, int action);
void
cdPathSet(canvas,action)
SV* canvas;
int action;
CODE:
cdCanvasPathSet(ref2cnv(canvas),action);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasEnd(cdCanvas* canvas);
void
cdEnd(canvas)
SV* canvas;
CODE:
cdCanvasEnd(ref2cnv(canvas));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasLine(cdCanvas* canvas, int x1, int y1, int x2, int y2);
void
cdLine(canvas,x1,y1,x2,y2)
SV* canvas;
int x1;
int y1;
int x2;
int y2;
CODE:
cdCanvasLine(ref2cnv(canvas),x1,y1,x2,y2);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasVertex(cdCanvas* canvas, int x, int y);
void
cdVertex(canvas,x,y)
SV* canvas;
int x;
int y;
CODE:
cdCanvasVertex(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasRect(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax);
void
cdRect(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
int xmin;
int xmax;
int ymin;
int ymax;
CODE:
cdCanvasRect(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasBox(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax);
void
cdBox(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
int xmin;
int xmax;
int ymin;
int ymax;
CODE:
cdCanvasBox(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasArc(cdCanvas* canvas, int xc, int yc, int w, int h, double angle1, double angle2);
void
cdArc(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
int xc;
int yc;
int w;
int h;
double angle1;
double angle2;
CODE:
cdCanvasArc(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasSector(cdCanvas* canvas, int xc, int yc, int w, int h, double angle1, double angle2);
void
cdSector(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
int xc;
int yc;
int w;
int h;
double angle1;
double angle2;
CODE:
cdCanvasSector(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasChord(cdCanvas* canvas, int xc, int yc, int w, int h, double angle1, double angle2);
void
cdChord(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
int xc;
int yc;
int w;
int h;
double angle1;
double angle2;
CODE:
cdCanvasChord(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasText(cdCanvas* canvas, int x, int y, const char* s);
void
cdText(canvas,x,y,s)
SV* canvas;
int x;
int y;
const char* s;
CODE:
cdCanvasText(ref2cnv(canvas),x,y,s);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasLine(cdCanvas* canvas, double x1, double y1, double x2, double y2);
void
cdfLine(canvas,x1,y1,x2,y2)
SV* canvas;
double x1;
double y1;
double x2;
double y2;
CODE:
cdfCanvasLine(ref2cnv(canvas),x1,y1,x2,y2);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasVertex(cdCanvas* canvas, double x, double y);
void
cdfVertex(canvas,x,y)
SV* canvas;
double x;
double y;
CODE:
cdfCanvasVertex(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasRect(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax);
void
cdfRect(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
cdfCanvasRect(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasBox(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax);
void
cdfBox(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
cdfCanvasBox(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasArc(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2);
void
cdfArc(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
double xc;
double yc;
double w;
double h;
double angle1;
double angle2;
CODE:
cdfCanvasArc(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasSector(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2);
void
cdfSector(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
double xc;
double yc;
double w;
double h;
double angle1;
double angle2;
CODE:
cdfCanvasSector(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasChord(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2);
void
cdfChord(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
double xc;
double yc;
double w;
double h;
double angle1;
double angle2;
CODE:
cdfCanvasChord(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/cd.h>
# void cdfCanvasText(cdCanvas* canvas, double x, double y, const char* s);
void
cdfText(canvas,x,y,s)
SV* canvas;
double x;
double y;
const char* s;
CODE:
cdfCanvasText(ref2cnv(canvas),x,y,s);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasSetBackground(cdCanvas* canvas, long color);
void
cdSetBackground(canvas,color)
SV* canvas;
long color;
CODE:
cdCanvasSetBackground(ref2cnv(canvas),color);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasSetForeground(cdCanvas* canvas, long color);
void
cdSetForeground(canvas,color)
SV* canvas;
long color;
CODE:
cdCanvasSetForeground(ref2cnv(canvas),color);
#### Original C function from <.../cd/include/cd.h>
# long cdCanvasBackground(cdCanvas* canvas, long color);
long
cdBackground(canvas,color)
SV* canvas;
long color;
CODE:
RETVAL = cdCanvasBackground(ref2cnv(canvas),color);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# long cdCanvasForeground(cdCanvas* canvas, long color);
long
cdForeground(canvas,color)
SV* canvas;
long color;
CODE:
RETVAL = cdCanvasForeground(ref2cnv(canvas),color);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasBackOpacity(cdCanvas* canvas, int opacity);
int
cdBackOpacity(canvas,opacity)
SV* canvas;
int opacity;
CODE:
RETVAL = cdCanvasBackOpacity(ref2cnv(canvas),opacity);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasWriteMode(cdCanvas* canvas, int mode);
int
cdWriteMode(canvas,mode)
SV* canvas;
int mode;
CODE:
RETVAL = cdCanvasWriteMode(ref2cnv(canvas),mode);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasLineStyle(cdCanvas* canvas, int style);
int
cdLineStyle(canvas,style)
SV* canvas;
int style;
CODE:
RETVAL = cdCanvasLineStyle(ref2cnv(canvas),style);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasLineStyleDashes(cdCanvas* canvas, const int* dashes, int count);
# canvas:LineStyleDashes(dashes: table, count: number) -> (old_style: number) [in Lua]
#xxxTODO/important (table)
void
cdLineStyleDashes(canvas,dashes,count)
SV* canvas;
SV* dashes;
int count;
INIT:
int tmpdashes[4];
CODE:
/* xxxTODO dashes>tmpdashes */
/* xxxTODO call:SV2int_array(dashes,&tmpdashes,count) */
cdCanvasLineStyleDashes(ref2cnv(canvas),tmpdashes,count);
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasLineWidth(cdCanvas* canvas, int width);
int
cdLineWidth(canvas,width)
SV* canvas;
int width;
CODE:
RETVAL = cdCanvasLineWidth(ref2cnv(canvas),width);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasLineJoin(cdCanvas* canvas, int join);
int
cdLineJoin(canvas,join)
SV* canvas;
int join;
CODE:
RETVAL = cdCanvasLineJoin(ref2cnv(canvas),join);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasLineCap(cdCanvas* canvas, int cap);
int
cdLineCap(canvas,cap)
SV* canvas;
int cap;
CODE:
RETVAL = cdCanvasLineCap(ref2cnv(canvas),cap);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasInteriorStyle(cdCanvas* canvas, int style);
int
cdInteriorStyle(canvas,style)
SV* canvas;
int style;
CODE:
RETVAL = cdCanvasInteriorStyle(ref2cnv(canvas),style);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasHatch(cdCanvas* canvas, int style);
int
cdHatch(canvas,style)
SV* canvas;
int style;
CODE:
RETVAL = cdCanvasHatch(ref2cnv(canvas),style);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasStipple(cdCanvas* canvas, int w, int h, const unsigned char* stipple);
#xxxTODO/important (cdStipple)
void
cdStipple(canvas,stipple)
SV* canvas;
SV* stipple;
INIT:
int w;
int h;
unsigned char* tmpstipple;
CODE:
/* xxxTODO cdstipple > rawdata */
/* xxxTODO call:SV2r_c_cdata(stipple,&w,&h,&tmpstipple) */
cdCanvasStipple(ref2cnv(canvas),w,h,tmpstipple);
#### Original C function from <.../cd/include/cd.h>
# unsigned char* cdCanvasGetStipple(cdCanvas* canvas, int *n, int *m);
# canvas:GetStipple() - > (stipple: cdStipple) [in Lua]
#xxxTODO/important (cdStipple)
SV*
cdGetStipple(canvas,n,m)
SV* canvas;
INIT:
int n;
int m;
unsigned char* stipple;
CODE:
stipple = cdCanvasGetStipple(ref2cnv(canvas),&n,&m);
/* xxxTODO call:r_c_cdata2SV(n,m,stipple) */
/* xxxTODO rawdata > cdstipple */
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPattern(cdCanvas* canvas, int w, int h, long const int *pattern);
# canvas:Pattern(pattern: cdPattern) [in Lua]
#xxxTODO/important (cdPattern)
void
cdPattern(canvas,pattern)
SV* canvas;
SV* pattern;
INIT:
int w;
int h;
long int* tmppattern; /* xxx maybe size of [100] will be enough - ruby is wrong */
CODE:
/* xxx pattern > raw data (w/h/tmppaterrn) */
/* xxxTODO call:SV2r_c_ldata(pattern,&w,&h,&tmppattern) */
cdCanvasPattern(ref2cnv(canvas),w,h,tmppattern);
#### Original C function from <.../cd/include/cd.h>
# long* cdCanvasGetPattern(cdCanvas* canvas, int* n, int* m);
# canvas:GetPattern() - > (pattern: cdPattern) [in Lua]
#xxxTODO/important (cdPattern)
void
cdGetPattern(canvas,n,m)
SV* canvas;
INIT:
int n;
int m;
long *data;
PPCODE:
data = cdCanvasGetPattern(ref2cnv(canvas),&n,&m);
/* xxxTODO call:r_c_ldata2SV(n,m,data) */
/* xxx data > retval stucture */
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasFillMode(cdCanvas* canvas, int mode);
int
cdFillMode(canvas,mode)
SV* canvas;
int mode;
CODE:
RETVAL = cdCanvasFillMode(ref2cnv(canvas),mode);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasFont(cdCanvas* canvas, const char* type_face, int style, int size);
int
cdFont(canvas,type_face,style,size)
SV* canvas;
const char* type_face;
int style;
int size;
CODE:
RETVAL = cdCanvasFont(ref2cnv(canvas),type_face,style,size);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetFont(cdCanvas* canvas, char *type_face, int *style, int *size);
# canvas:GetFont() -> (typeface: string, style, size: number) [in Lua]
#xxx DONE (string conversion)
void
cdGetFont(canvas,type_face,style,size)
SV* canvas;
INIT:
char type_face[1024]; /* 1024 taken from cd_private.h */
int style;
int size;
PPCODE:
cdCanvasGetFont(ref2cnv(canvas),type_face,&style,&size);
XPUSHs(sv_2mortal(newSVpv(type_face,0)));
XPUSHs(sv_2mortal(newSViv(style)));
XPUSHs(sv_2mortal(newSViv(size)));
#### Original C function from <.../cd/include/cd.h>
# char* cdCanvasNativeFont(cdCanvas* canvas, const char* font);
char*
cdNativeFont(canvas,font)
SV* canvas;
const char* font;
CODE:
RETVAL = cdCanvasNativeFont(ref2cnv(canvas),font);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasTextAlignment(cdCanvas* canvas, int alignment);
int
cdTextAlignment(canvas,alignment)
SV* canvas;
int alignment;
CODE:
RETVAL = cdCanvasTextAlignment(ref2cnv(canvas),alignment);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# double cdCanvasTextOrientation(cdCanvas* canvas, double angle);
double
cdTextOrientation(canvas,angle)
SV* canvas;
double angle;
CODE:
RETVAL = cdCanvasTextOrientation(ref2cnv(canvas),angle);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasMarkType(cdCanvas* canvas, int type);
int
cdMarkType(canvas,type)
SV* canvas;
int type;
CODE:
RETVAL = cdCanvasMarkType(ref2cnv(canvas),type);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasMarkSize(cdCanvas* canvas, int size);
int
cdMarkSize(canvas,size)
SV* canvas;
int size;
CODE:
RETVAL = cdCanvasMarkSize(ref2cnv(canvas),size);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasVectorText(cdCanvas* canvas, int x, int y, const char* s);
void
cdVectorText(canvas,x,y,s)
SV* canvas;
int x;
int y;
const char* s;
CODE:
cdCanvasVectorText(ref2cnv(canvas),x,y,s);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasMultiLineVectorText(cdCanvas* canvas, int x, int y, const char* s);
void
cdMultiLineVectorText(canvas,x,y,s)
SV* canvas;
int x;
int y;
const char* s;
CODE:
cdCanvasMultiLineVectorText(ref2cnv(canvas),x,y,s);
#### Original C function from <.../cd/include/cd.h>
# char* cdCanvasVectorFont(cdCanvas* canvas, const char *filename);
char*
cdVectorFont(canvas,filename)
SV* canvas;
const char* filename;
CODE:
RETVAL = cdCanvasVectorFont(ref2cnv(canvas),filename);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasVectorTextDirection(cdCanvas* canvas, int x1, int y1, int x2, int y2);
void
cdVectorTextDirection(canvas,x1,y1,x2,y2)
SV* canvas;
int x1;
int y1;
int x2;
int y2;
CODE:
cdCanvasVectorTextDirection(ref2cnv(canvas),x1,y1,x2,y2);
#### Original C function from <.../cd/include/cd.h>
# double* cdCanvasVectorTextTransform(cdCanvas* canvas, const double* matrix);
# canvas:VectorTextTransform(matrix: table) -> (old_matrix: table) [in Lua]
#xxxTODO/important (matrix)
void
cdVectorTextTransform(canvas,matrix)
SV* canvas;
SV* matrix;
INIT:
double tmpmatrix[6];
double *rv;
PPCODE:
/* xxx matrix array > tmpmatrix */
/* xxxTODO call:SV2transf_matrix(matrix,&tmpmatrix) */
rv = cdCanvasVectorTextTransform(ref2cnv(canvas),tmpmatrix);
/* xxxTODO call:transf_matrix2SV(rv) */
/* xxx rv > matrix array */
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasVectorTextSize(cdCanvas* canvas, int size_x, int size_y, const char* s);
void
cdVectorTextSize(canvas,size_x,size_y,s)
SV* canvas;
int size_x;
int size_y;
const char* s;
CODE:
cdCanvasVectorTextSize(ref2cnv(canvas),size_x,size_y,s);
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasVectorCharSize(cdCanvas* canvas, int size);
int
cdVectorCharSize(canvas,size)
SV* canvas;
int size;
CODE:
RETVAL = cdCanvasVectorCharSize(ref2cnv(canvas),size);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasVectorFontSize(cdCanvas* canvas, double size_x, double size_y);
void
cdVectorFontSize(canvas,size_x,size_y)
SV* canvas;
double size_x;
double size_y;
CODE:
cdCanvasVectorFontSize(ref2cnv(canvas),size_x,size_y);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetVectorFontSize(cdCanvas* canvas, double *size_x, double *size_y);
# canvas:GetVectorFontSize() -> (size_x, size_y: number) [in Lua]
#xxx DONE
void
cdGetVectorFontSize(canvas)
SV* canvas;
INIT:
double size_x;
double size_y;
PPCODE:
cdCanvasGetVectorFontSize(ref2cnv(canvas),&size_x,&size_y);
XPUSHs(sv_2mortal(newSVnv(size_x)));
XPUSHs(sv_2mortal(newSVnv(size_y)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetVectorTextSize(cdCanvas* canvas, const char* s, int *x, int *y);
# canvas:GetVectorTextSize(text: string) -> (width, height: number) [in Lua]
#xxx DONE
void
cdGetVectorTextSize(canvas,s)
SV* canvas;
const char* s;
INIT:
int x;
int y;
PPCODE:
cdCanvasGetVectorTextSize(ref2cnv(canvas),s,&x,&y);
XPUSHs(sv_2mortal(newSViv(x)));
XPUSHs(sv_2mortal(newSViv(y)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetVectorTextBounds(cdCanvas* canvas, const char* s, int x, int y, int *rect);
# canvas:GetVectorTextBounds(text: string, x, y: number) -> (rect: table) [in Lua]
#xxx DONE (table)
void
cdGetVectorTextBounds(canvas,s,x,y,rect)
SV* canvas;
const char* s;
int x;
int y;
INIT:
int rect[8];
PPCODE:
cdCanvasGetVectorTextBounds(ref2cnv(canvas),s,x,y,rect);
XPUSHs(sv_2mortal(newSViv(rect[0]))); /* x0 */
XPUSHs(sv_2mortal(newSViv(rect[1]))); /* y0 */
XPUSHs(sv_2mortal(newSViv(rect[2]))); /* x1 */
XPUSHs(sv_2mortal(newSViv(rect[3]))); /* y1 */
XPUSHs(sv_2mortal(newSViv(rect[4]))); /* x2 */
XPUSHs(sv_2mortal(newSViv(rect[5]))); /* y2 */
XPUSHs(sv_2mortal(newSViv(rect[6]))); /* x3 */
XPUSHs(sv_2mortal(newSViv(rect[7]))); /* y3 */
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetVectorTextBox(cdCanvas* canvas, int x, int y, const char *s, int *xmin, int *xmax, int *ymin, int *ymax);
# canvas:GetVectorTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) [in Lua]
#xxx DONE
void
cdGetVectorTextBox(canvas,x,y,s)
SV* canvas;
int x;
int y;
const char* s;
INIT:
int xmin;
int xmax;
int ymin;
int ymax;
PPCODE:
cdCanvasGetVectorTextBox(ref2cnv(canvas),x,y,s,&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSViv(xmin)));
XPUSHs(sv_2mortal(newSViv(xmax)));
XPUSHs(sv_2mortal(newSViv(ymin)));
XPUSHs(sv_2mortal(newSViv(ymax)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetFontDim(cdCanvas* canvas, int *max_width, int *height, int *ascent, int *descent);
# canvas:GetFontDim() -> (max_width, height, ascent, descent: number) [in Lua]
#xxx DONE
void
cdGetFontDim(canvas)
SV* canvas;
INIT:
int max_width;
int height;
int ascent;
int descent;
PPCODE:
cdCanvasGetFontDim(ref2cnv(canvas),&max_width,&height,&ascent,&descent);
XPUSHs(sv_2mortal(newSViv(max_width)));
XPUSHs(sv_2mortal(newSViv(height)));
XPUSHs(sv_2mortal(newSViv(ascent)));
XPUSHs(sv_2mortal(newSViv(descent)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetTextSize(cdCanvas* canvas, const char* s, int *width, int *height);
# canvas:GetTextSize(text: string) -> (width, heigth: number) [in Lua]
#xxx DONE
void
cdGetTextSize(canvas,s)
SV* canvas;
const char* s;
INIT:
int width;
int height;
PPCODE:
cdCanvasGetTextSize(ref2cnv(canvas),s,&width,&height);
XPUSHs(sv_2mortal(newSViv(width)));
XPUSHs(sv_2mortal(newSViv(height)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetTextBox(cdCanvas* canvas, int x, int y, const char* s, int *xmin, int *xmax, int *ymin, int *ymax);
# canvas:GetTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) [in Lua]
#xxx DONE
void
cdGetTextBox(canvas,x,y,s)
SV* canvas;
int x;
int y;
const char* s;
INIT:
int xmin;
int xmax;
int ymin;
int ymax;
PPCODE:
cdCanvasGetTextBox(ref2cnv(canvas),x,y,s,&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSViv(xmin)));
XPUSHs(sv_2mortal(newSViv(xmax)));
XPUSHs(sv_2mortal(newSViv(ymin)));
XPUSHs(sv_2mortal(newSViv(ymax)));
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetTextBounds(cdCanvas* canvas, int x, int y, const char* s, int *rect);
# canvas:GetTextBounds(x, y: number, text: string) -> (rect: table) [in Lua]
#xxx DONE (table)
void
cdGetTextBounds(canvas,x,y,s,rect)
SV* canvas;
int x;
int y;
const char* s;
INIT:
int rect[8];
PPCODE:
cdCanvasGetTextBounds(ref2cnv(canvas),x,y,s,rect);
XPUSHs(sv_2mortal(newSViv(rect[0]))); /* x0 */
XPUSHs(sv_2mortal(newSViv(rect[1]))); /* y0 */
XPUSHs(sv_2mortal(newSViv(rect[2]))); /* x1 */
XPUSHs(sv_2mortal(newSViv(rect[3]))); /* y1 */
XPUSHs(sv_2mortal(newSViv(rect[4]))); /* x2 */
XPUSHs(sv_2mortal(newSViv(rect[5]))); /* y2 */
XPUSHs(sv_2mortal(newSViv(rect[6]))); /* x3 */
XPUSHs(sv_2mortal(newSViv(rect[7]))); /* y3 */
#### Original C function from <.../cd/include/cd.h>
# int cdCanvasGetColorPlanes(cdCanvas* canvas);
int
cdGetColorPlanes(canvas)
SV* canvas;
CODE:
RETVAL = cdCanvasGetColorPlanes(ref2cnv(canvas));
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPalette(cdCanvas* canvas, int n, const long *palette, int mode);
# canvas:Palette(palette: cdPalette; mode: number) [in Lua]
#xxxTODO/important (cdPallete)
#!!!NOTE!!!
# cd.CreatePalette(size: number) -> (palette: cdPalette) [in Lua Only]
# palette[index] = cd.EncodeColor(r, g, b)
# cd.KillPalette(palette: cdPalette) [in Lua Only]
void
cdPalette(canvas,n,palette,mode)
SV* canvas;
SV* palette;
int mode;
INIT:
int n;
long* tmppalette;
CODE:
/* xxx convert: palette > n+tmppalette */
/* xxxTODO call:SV2n_ldata(palette,&n,tmppalette) */
cdCanvasPalette(ref2cnv(canvas),n,tmppalette,mode);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetImageRGB(cdCanvas* canvas, unsigned char* r, unsigned char* g, unsigned char* b, int x, int y, int w, int h);
# canvas:GetImageRGB(imagergb: cdImageRGB; x, y: number) [in Lua]
#xxxTODO/important (cdImageRGB)
void
cdGetImageRGB(canvas,r,g,b,x,y,w,h)
SV* canvas;
unsigned char* r;
unsigned char* g;
unsigned char* b;
int x;
int y;
int w;
int h;
CODE:
cdCanvasGetImageRGB(ref2cnv(canvas),r,g,b,x,y,w,h);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPutImageRectRGB(cdCanvas* canvas, int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
# canvas:PutImageRectRGB(imagergb: cdImageRGB; x, y, w, h, xmin, xmax, ymin, ymax: number) [in Lua]
#xxxTODO/important (cdImageRGB)
#void
#cdPutImageRectRGB(canvas,iw,ih,r,g,b,x,y,w,h,xmin,xmax,ymin,ymax)
# SV* canvas;
# int iw;
# int ih;
# const unsigned char* r;
# const unsigned char* g;
# const unsigned char* b;
# int x;
# int y;
# int w;
# int h;
# int xmin;
# int xmax;
# int ymin;
# int ymax;
# CODE:
# cdCanvasPutImageRectRGB(ref2cnv(canvas),iw,ih,r,g,b,x,y,w,h,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPutImageRectRGBA(cdCanvas* canvas, int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, const unsigned char* a, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
# canvas:PutImageRectRGBA(imagergba: cdImageRGBA; x, y, w, h, xmin, xmax, ymin, ymax: number) [in Lua]
#xxxTODO/important (cdImageRGBA)
#void
#cdPutImageRectRGBA(canvas,iw,ih,r,g,b,a,x,y,w,h,xmin,xmax,ymin,ymax)
# SV* canvas;
# int iw;
# int ih;
# const unsigned char* r;
# const unsigned char* g;
# const unsigned char* b;
# const unsigned char* a;
# int x;
# int y;
# int w;
# int h;
# int xmin;
# int xmax;
# int ymin;
# int ymax;
# CODE:
# cdCanvasPutImageRectRGBA(ref2cnv(canvas),iw,ih,r,g,b,a,x,y,w,h,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPutImageRectMap(cdCanvas* canvas, int iw, int ih, const unsigned char* index, const long* colors, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
# canvas:PutImageRectMap(imagemap: cdImageMap; palette: cdPalette; x, y, w, h, xmin, xmax, ymin, ymax: number) [in Lua]
#xxxTODO/important (cdImageMap, cdPalette)
#void
#cdPutImageRectMap(canvas,iw,ih,index,colors,x,y,w,h,xmin,xmax,ymin,ymax)
# SV* canvas;
# int iw;
# int ih;
# const unsigned char* index;
# const long* colors;
# int x;
# int y;
# int w;
# int h;
# int xmin;
# int xmax;
# int ymin;
# int ymax;
# CODE:
# cdCanvasPutImageRectMap(ref2cnv(canvas),iw,ih,index,colors,x,y,w,h,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# cdImage* cdCanvasCreateImage(cdCanvas* canvas, int w, int h);
cdImage*
cdCreateImage(canvas,w,h)
SV* canvas;
int w;
int h;
CODE:
RETVAL = cdCanvasCreateImage(ref2cnv(canvas),w,h);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdKillImage(cdImage* image);
void
cdKillImage(image)
cdImage* image;
CODE:
cdKillImage(image);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetImage(cdCanvas* canvas, cdImage* image, int x, int y);
void
cdGetImage(canvas,image,x,y)
SV* canvas;
cdImage* image;
int x;
int y;
CODE:
cdCanvasGetImage(ref2cnv(canvas),image,x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPutImageRect(cdCanvas* canvas, cdImage* image, int x, int y, int xmin, int xmax, int ymin, int ymax);
void
cdPutImageRect(canvas,image,x,y,xmin,xmax,ymin,ymax)
SV* canvas;
cdImage* image;
int x;
int y;
int xmin;
int xmax;
int ymin;
int ymax;
CODE:
cdCanvasPutImageRect(ref2cnv(canvas),image,x,y,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasScrollArea(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax, int dx, int dy);
void
cdScrollArea(canvas,xmin,xmax,ymin,ymax,dx,dy)
SV* canvas;
int xmin;
int xmax;
int ymin;
int ymax;
int dx;
int dy;
CODE:
cdCanvasScrollArea(ref2cnv(canvas),xmin,xmax,ymin,ymax,dx,dy);
#### Original C function from <.../cd/include/cd.h>
# cdBitmap* cdCreateBitmap(int w, int h, int type);
#xxxTODO/important (cdBitmap) - maybe OK (no need to be Canvas method)
cdBitmap*
cdCreateBitmap(w,h,type)
int w;
int h;
int type;
CODE:
RETVAL = cdCreateBitmap(w,h,type);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# cdBitmap* cdInitBitmap(int w, int h, int type, ...);
#xxxTODO/important (cdBitmap) - variable arg list? (no need to be Canvas method) what is the diff cdCreateBitmap vs. cdInitBitmap?
cdBitmap*
cdInitBitmap(w,h,type,...)
int w;
int h;
int type;
CODE:
RETVAL = cdInitBitmap(w,h,type);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdKillBitmap(cdBitmap* bitmap);
#xxxTODO/important (cdBitmap) - maybe OK (no need to be Canvas method)
void
cdKillBitmap(bitmap)
cdBitmap* bitmap;
CODE:
cdKillBitmap(bitmap);
#### Original C function from <.../cd/include/cd.h>
# unsigned char* cdBitmapGetData(cdBitmap* bitmap, int dataptr);
#xxxTODO/important (cdBitmap / dataptr) (no need to be Canvas method)
void
cdBitmapGetData(bitmap,dataptr)
cdBitmap* bitmap;
int dataptr;
INIT:
unsigned char* data;
PPCODE:
data = cdBitmapGetData(bitmap,dataptr);
/* xxx data > return array */
#### Original C function from <.../cd/include/cd.h>
# void cdBitmapSetRect(cdBitmap* bitmap, int xmin, int xmax, int ymin, int ymax);
#xxxTODO/important (cdBitmap) - maybe OK (no need to be Canvas method)
void
cdBitmapSetRect(bitmap,xmin,xmax,ymin,ymax)
cdBitmap* bitmap;
int xmin;
int xmax;
int ymin;
int ymax;
CODE:
cdBitmapSetRect(bitmap,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasPutBitmap(cdCanvas* canvas, cdBitmap* bitmap, int x, int y, int w, int h);
#xxxTODO/important (cdBitmap) - maybe OK
void
cdPutBitmap(canvas,bitmap,x,y,w,h)
SV* canvas;
cdBitmap* bitmap;
int x;
int y;
int w;
int h;
CODE:
cdCanvasPutBitmap(ref2cnv(canvas),bitmap,x,y,w,h);
#### Original C function from <.../cd/include/cd.h>
# void cdCanvasGetBitmap(cdCanvas* canvas, cdBitmap* bitmap, int x, int y);
#xxxTODO/important (cdBitmap) - maybe OK
void
cdGetBitmap(canvas,bitmap,x,y)
SV* canvas;
cdBitmap* bitmap;
int x;
int y;
CODE:
cdCanvasGetBitmap(ref2cnv(canvas),bitmap,x,y);
#### Original C function from <.../cd/include/cd.h>
# void cdBitmapRGB2Map(cdBitmap* bitmap_rgb, cdBitmap* bitmap_map);
#xxxTODO/important (cdBitmap) (no need to be Canvas method)
void
cdBitmapRGB2Map(bitmap_rgb,bitmap_map)
cdBitmap* bitmap_rgb;
cdBitmap* bitmap_map;
CODE:
cdBitmapRGB2Map(bitmap_rgb,bitmap_map);
#### Original C function from <.../cd/include/cd.h>
# long cdEncodeColor(unsigned char red, unsigned char green, unsigned char blue);
long
cdEncodeColor(pkg,red,green,blue)
SV* pkg;
unsigned char red;
unsigned char green;
unsigned char blue;
CODE:
RETVAL = cdEncodeColor(red,green,blue);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdDecodeColor(long color, unsigned char* red, unsigned char* green, unsigned char* blue);
void
cdDecodeColor(pkg,color,red,green,blue)
SV* pkg;
long color;
INIT:
unsigned char red;
unsigned char green;
unsigned char blue;
CODE:
cdDecodeColor(color,&red,&green,&blue);
XPUSHs(sv_2mortal(newSViv(red)));
XPUSHs(sv_2mortal(newSViv(green)));
XPUSHs(sv_2mortal(newSViv(blue)));
#### Original C function from <.../cd/include/cd.h>
# unsigned char cdDecodeAlpha(long color);
unsigned char
cdDecodeAlpha(pkg,color)
SV* pkg;
long color;
CODE:
RETVAL = cdDecodeAlpha(color);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# long cdEncodeAlpha(long color, unsigned char alpha);
long
cdEncodeAlpha(pkg,color,alpha)
SV* pkg;
long color;
unsigned char alpha;
CODE:
RETVAL = cdEncodeAlpha(color,alpha);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/cd.h>
# void cdRGB2Map(int width, int height, const unsigned char* red, const unsigned char* green, const unsigned char* blue, unsigned char* index, int pal_size, long *color);
# cd.RGB2Map(imagergb: cdImageRGB, imagemap: cdImageMap, palette: cdPalette) [in Lua]
#xxxTODO/important (cdPalette - cdImageRGB related)
#void
#cdRGB2Map(width,height,red,green,blue,index,pal_size,color)
# int width;
# int height;
# const unsigned char* red;
# const unsigned char* green;
# const unsigned char* blue;
# unsigned char* index;
# int pal_size;
# long* color;
# CODE:
# cdRGB2Map(width,height,red,green,blue,index,pal_size,color);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasWindow(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax);
void
wdWindow(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
wdCanvasWindow(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetWindow(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax);
# canvas:wGetWindow() -> (xmin, xmax, ymin, ymax: number) [in Lua]
#xxx DONE
void
wdGetWindow(canvas)
SV* canvas;
INIT:
double xmin;
double xmax;
double ymin;
double ymax;
PPCODE:
wdCanvasGetWindow(ref2cnv(canvas),&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSVnv(xmin)));
XPUSHs(sv_2mortal(newSVnv(xmax)));
XPUSHs(sv_2mortal(newSVnv(ymin)));
XPUSHs(sv_2mortal(newSVnv(ymax)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasViewport(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax);
void
wdViewport(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
int xmin;
int xmax;
int ymin;
int ymax;
CODE:
wdCanvasViewport(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetViewport(cdCanvas* canvas, int *xmin, int *xmax, int *ymin, int *ymax);
# canvas:wGetViewport() -> (xmin, xmax, ymin, ymax: number) [in Lua]
#xxx DONE
void
wdGetViewport(canvas)
SV* canvas;
INIT:
int xmin;
int xmax;
int ymin;
int ymax;
PPCODE:
wdCanvasGetViewport(ref2cnv(canvas),&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSViv(xmin)));
XPUSHs(sv_2mortal(newSViv(xmax)));
XPUSHs(sv_2mortal(newSViv(ymin)));
XPUSHs(sv_2mortal(newSViv(ymax)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasWorld2Canvas(cdCanvas* canvas, double xw, double yw, int *xv, int *yv);
# canvas:wWorld2Canvas(xw, yw: number) -> (xv, yv: number) [in Lua]
#xxx DONE
void
wdWorld2Canvas(canvas,xw,yw)
SV* canvas;
double xw;
double yw;
INIT:
int xv;
int yv;
PPCODE:
wdCanvasWorld2Canvas(ref2cnv(canvas),xw,yw,&xv,&yv);
XPUSHs(sv_2mortal(newSViv(xv)));
XPUSHs(sv_2mortal(newSViv(yv)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasWorld2CanvasSize(cdCanvas* canvas, double hw, double vw, int *hv, int *vv);
# Lua ???
#xxx DONE
void
wdWorld2CanvasSize(canvas,hw,vw)
SV* canvas;
double hw;
double vw;
INIT:
int hv;
int vv;
PPCODE:
wdCanvasWorld2CanvasSize(ref2cnv(canvas),hw,vw,&hv,&vv);
XPUSHs(sv_2mortal(newSViv(hv)));
XPUSHs(sv_2mortal(newSViv(vv)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasCanvas2World(cdCanvas* canvas, int xv, int yv, double *xw, double *yw);
# canvas:wCanvas2World(xv, yv: number) -> (xw, yw: number) [in Lua]
#xxx DONE
void
wdCanvas2World(canvas,xv,yv)
SV* canvas;
int xv;
int yv;
INIT:
double xw;
double yw;
PPCODE:
wdCanvasCanvas2World(ref2cnv(canvas),xv,yv,&xw,&yw);
XPUSHs(sv_2mortal(newSVnv(xw)));
XPUSHs(sv_2mortal(newSVnv(yw)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasSetTransform(cdCanvas* canvas, double sx, double sy, double tx, double ty);
void
wdSetTransform(canvas,sx,sy,tx,ty)
SV* canvas;
double sx;
double sy;
double tx;
double ty;
CODE:
wdCanvasSetTransform(ref2cnv(canvas),sx,sy,tx,ty);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetTransform(cdCanvas* canvas, double *sx, double *sy, double *tx, double *ty);
# canvas:wGetTransform() -> (sx, sy, tx, ty: number) [in Lua]
#xxx DONE
void
wdGetTransform(canvas)
SV* canvas;
INIT:
double sx;
double sy;
double tx;
double ty;
PPCODE:
wdCanvasGetTransform(ref2cnv(canvas),&sx,&sy,&tx,&ty);
XPUSHs(sv_2mortal(newSVnv(sx)));
XPUSHs(sv_2mortal(newSVnv(sy)));
XPUSHs(sv_2mortal(newSVnv(tx)));
XPUSHs(sv_2mortal(newSVnv(ty)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasTranslate(cdCanvas* canvas, double dtx, double dty);
void
wdTranslate(canvas,dtx,dty)
SV* canvas;
double dtx;
double dty;
CODE:
wdCanvasTranslate(ref2cnv(canvas),dtx,dty);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasScale(cdCanvas* canvas, double dsx, double dsy);
void
wdScale(canvas,dsx,dsy)
SV* canvas;
double dsx;
double dsy;
CODE:
wdCanvasScale(ref2cnv(canvas),dsx,dsy);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasClipArea(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax);
void
wdClipArea(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
wdCanvasClipArea(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# int wdCanvasGetClipArea(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax);
# canvas:wGetClipArea() -> (xmin, xmax, ymin, ymax, status: number) (WC) [in Lua]
#xxx DONE
void
wdGetClipArea(canvas)
SV* canvas;
INIT:
int status;
double xmin;
double xmax;
double ymin;
double ymax;
PPCODE:
status = wdCanvasGetClipArea(ref2cnv(canvas),&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSVnv(xmin)));
XPUSHs(sv_2mortal(newSVnv(xmax)));
XPUSHs(sv_2mortal(newSVnv(ymin)));
XPUSHs(sv_2mortal(newSVnv(ymax)));
XPUSHs(sv_2mortal(newSViv(status)));
#### Original C function from <.../cd/include/wd.h>
# int wdCanvasIsPointInRegion(cdCanvas* canvas, double x, double y);
int
wdIsPointInRegion(canvas,x,y)
SV* canvas;
double x;
double y;
CODE:
RETVAL = wdCanvasIsPointInRegion(ref2cnv(canvas),x,y);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasOffsetRegion(cdCanvas* canvas, double x, double y);
void
wdOffsetRegion(canvas,x,y)
SV* canvas;
double x;
double y;
CODE:
wdCanvasOffsetRegion(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetRegionBox(cdCanvas* canvas, double *xmin, double *xmax, double *ymin, double *ymax);
# canvas:wGetRegionBox() -> (xmin, xmax, ymin, ymax, status: number) (WC) [in Lua]
#xxx DONE
void
wdGetRegionBox(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
INIT:
int status = 4; /* inspired by Lua */
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
wdCanvasGetRegionBox(ref2cnv(canvas),&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSVnv(xmin)));
XPUSHs(sv_2mortal(newSVnv(xmax)));
XPUSHs(sv_2mortal(newSVnv(ymin)));
XPUSHs(sv_2mortal(newSVnv(ymax)));
XPUSHs(sv_2mortal(newSViv(status)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasHardcopy(cdCanvas* canvas, cdContext* ctx, void *data, void(*draw_func)(cdCanvas *canvas_copy));
# canvas:wCanvasHardcopy(ctx: number, data: string or userdata, draw_func: function) [in Lua]
#xxxTODO/important (cdContext)
#void
#wdHardcopy(canvas,ctx,data,draw_func)
# SV* canvas;
# cdContext* ctx;
# void* data;
# void(* draw_func;
# CODE:
# wdCanvasHardcopy(ref2cnv(canvas),ctx,data,draw_func);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasPixel(cdCanvas* canvas, double x, double y, long color);
void
wdPixel(canvas,x,y,color)
SV* canvas;
double x;
double y;
long color;
CODE:
wdCanvasPixel(ref2cnv(canvas),x,y,color);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasMark(cdCanvas* canvas, double x, double y);
void
wdMark(canvas,x,y)
SV* canvas;
double x;
double y;
CODE:
wdCanvasMark(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasLine(cdCanvas* canvas, double x1, double y1, double x2, double y2);
void
wdLine(canvas,x1,y1,x2,y2)
SV* canvas;
double x1;
double y1;
double x2;
double y2;
CODE:
wdCanvasLine(ref2cnv(canvas),x1,y1,x2,y2);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasVertex(cdCanvas* canvas, double x, double y);
void
wdVertex(canvas,x,y)
SV* canvas;
double x;
double y;
CODE:
wdCanvasVertex(ref2cnv(canvas),x,y);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasRect(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax);
void
wdRect(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
wdCanvasRect(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasBox(cdCanvas* canvas, double xmin, double xmax, double ymin, double ymax);
void
wdBox(canvas,xmin,xmax,ymin,ymax)
SV* canvas;
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
wdCanvasBox(ref2cnv(canvas),xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasArc(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2);
void
wdArc(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
double xc;
double yc;
double w;
double h;
double angle1;
double angle2;
CODE:
wdCanvasArc(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasSector(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2);
void
wdSector(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
double xc;
double yc;
double w;
double h;
double angle1;
double angle2;
CODE:
wdCanvasSector(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasChord(cdCanvas* canvas, double xc, double yc, double w, double h, double angle1, double angle2);
void
wdChord(canvas,xc,yc,w,h,angle1,angle2)
SV* canvas;
double xc;
double yc;
double w;
double h;
double angle1;
double angle2;
CODE:
wdCanvasChord(ref2cnv(canvas),xc,yc,w,h,angle1,angle2);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasText(cdCanvas* canvas, double x, double y, const char* s);
void
wdText(canvas,x,y,s)
SV* canvas;
double x;
double y;
const char* s;
CODE:
wdCanvasText(ref2cnv(canvas),x,y,s);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasPutImageRect(cdCanvas* canvas, cdImage* image, double x, double y, int xmin, int xmax, int ymin, int ymax);
void
wdPutImageRect(canvas,image,x,y,xmin,xmax,ymin,ymax)
SV* canvas;
cdImage* image;
double x;
double y;
int xmin;
int xmax;
int ymin;
int ymax;
CODE:
wdCanvasPutImageRect(ref2cnv(canvas),image,x,y,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasPutImageRectRGB(cdCanvas* canvas, int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
#xxxTODO/important params (cdImage... related)
#void
#wdPutImageRectRGB(canvas,iw,ih,r,g,b,x,y,w,h,xmin,xmax,ymin,ymax)
# SV* canvas;
# int iw;
# int ih;
# const unsigned char* r;
# const unsigned char* g;
# const unsigned char* b;
# double x;
# double y;
# double w;
# double h;
# int xmin;
# int xmax;
# int ymin;
# int ymax;
# CODE:
# wdCanvasPutImageRectRGB(ref2cnv(canvas),iw,ih,r,g,b,x,y,w,h,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasPutImageRectRGBA(cdCanvas* canvas, int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, const unsigned char* a, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
#xxxTODO/important params (cdImage... related)
#void
#wdPutImageRectRGBA(canvas,iw,ih,r,g,b,a,x,y,w,h,xmin,xmax,ymin,ymax)
# SV* canvas;
# int iw;
# int ih;
# const unsigned char* r;
# const unsigned char* g;
# const unsigned char* b;
# const unsigned char* a;
# double x;
# double y;
# double w;
# double h;
# int xmin;
# int xmax;
# int ymin;
# int ymax;
# CODE:
# wdCanvasPutImageRectRGBA(ref2cnv(canvas),iw,ih,r,g,b,a,x,y,w,h,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasPutImageRectMap(cdCanvas* canvas, int iw, int ih, const unsigned char* index, const long* colors, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
# canvas:wPutImageRectMap(imagemap: cdImageMap; palette: cdPalette; x, y, w, h, xmin, xmax, ymin, ymax: number) (WC) [in Lua]
#xxxTODO/important (cdImageMap, cdPalette)
#void
#wdPutImageRectMap(canvas,iw,ih,index,colors,x,y,w,h,xmin,xmax,ymin,ymax)
# SV* canvas;
# int iw;
# int ih;
# const unsigned char* index;
# const long* colors;
# double x;
# double y;
# double w;
# double h;
# int xmin;
# int xmax;
# int ymin;
# int ymax;
# CODE:
# wdCanvasPutImageRectMap(ref2cnv(canvas),iw,ih,index,colors,x,y,w,h,xmin,xmax,ymin,ymax);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasPutBitmap(cdCanvas* canvas, cdBitmap* bitmap, double x, double y, double w, double h);
#xxxTODO/important (cdBitmap) - maybe OK
void
wdPutBitmap(canvas,bitmap,x,y,w,h)
SV* canvas;
cdBitmap* bitmap;
double x;
double y;
double w;
double h;
CODE:
wdCanvasPutBitmap(ref2cnv(canvas),bitmap,x,y,w,h);
#### Original C function from <.../cd/include/wd.h>
# double wdCanvasLineWidth(cdCanvas* canvas, double width);
double
wdLineWidth(canvas,width)
SV* canvas;
double width;
CODE:
RETVAL = wdCanvasLineWidth(ref2cnv(canvas),width);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/wd.h>
# int wdCanvasFont(cdCanvas* canvas, const char* type_face, int style, double size);
int
wdFont(canvas,type_face,style,size)
SV* canvas;
const char* type_face;
int style;
double size;
CODE:
RETVAL = wdCanvasFont(ref2cnv(canvas),type_face,style,size);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetFont(cdCanvas* canvas, char *type_face, int *style, double *size);
# canvas:wGetFont() -> (typeface: string, style, size: number) (WC) [in Lua]
#xxx DONE (return string)
void
wdGetFont(canvas,type_face,style,size)
SV* canvas;
INIT:
char type_face[1024]; /* 1024 taken from cd_private.h */
int style;
double size;
PPCODE:
wdCanvasGetFont(ref2cnv(canvas),type_face,&style,&size);
XPUSHs(sv_2mortal(newSVpv(type_face,0)));
XPUSHs(sv_2mortal(newSViv(style)));
XPUSHs(sv_2mortal(newSVnv(size)));
#### Original C function from <.../cd/include/wd.h>
# double wdCanvasMarkSize(cdCanvas* canvas, double size);
double
wdMarkSize(canvas,size)
SV* canvas;
double size;
CODE:
RETVAL = wdCanvasMarkSize(ref2cnv(canvas),size);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetFontDim(cdCanvas* canvas, double *max_width, double *height, double *ascent, double *descent);
# canvas:wGetFontDim() -> (max_width, height, ascent, descent: number) (WC) [in Lua]
#xxx DONE
void
wdGetFontDim(canvas)
SV* canvas;
INIT:
double max_width;
double height;
double ascent;
double descent;
PPCODE:
wdCanvasGetFontDim(ref2cnv(canvas),&max_width,&height,&ascent,&descent);
XPUSHs(sv_2mortal(newSVnv(max_width)));
XPUSHs(sv_2mortal(newSVnv(height)));
XPUSHs(sv_2mortal(newSVnv(ascent)));
XPUSHs(sv_2mortal(newSVnv(descent)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetTextSize(cdCanvas* canvas, const char* s, double *width, double *height);
# canvas:wGetTextSize(text: string) -> (width, heigth: number) (WC) [in Lua]
#xxx DONE
void
wdGetTextSize(canvas,s)
SV* canvas;
const char* s;
INIT:
double width;
double height;
PPCODE:
wdCanvasGetTextSize(ref2cnv(canvas),s,&width,&height);
XPUSHs(sv_2mortal(newSVnv(width)));
XPUSHs(sv_2mortal(newSVnv(height)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetTextBox(cdCanvas* canvas, double x, double y, const char* s, double *xmin, double *xmax, double *ymin, double *ymax);
# canvas:wGetTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) (WC) [in Lua]
#xxx DONE
void
wdGetTextBox(canvas,x,y,s)
SV* canvas;
double x;
double y;
const char* s;
INIT:
double xmin;
double xmax;
double ymin;
double ymax;
PPCODE:
wdCanvasGetTextBox(ref2cnv(canvas),x,y,s,&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSVnv(xmin)));
XPUSHs(sv_2mortal(newSVnv(xmax)));
XPUSHs(sv_2mortal(newSVnv(ymin)));
XPUSHs(sv_2mortal(newSVnv(ymax)));
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetTextBounds(cdCanvas* canvas, double x, double y, const char* s, double *rect);
# canvas:wGetTextBounds(x, y: number, text: string) -> (rect: table) (WC) [in Lua]
#xxx DONE (table)
void
wdGetTextBounds(canvas,x,y,s,rect)
SV* canvas;
double x;
double y;
const char* s;
INIT:
double rect[8];
PPCODE:
wdCanvasGetTextBounds(ref2cnv(canvas),x,y,s,rect);
XPUSHs(sv_2mortal(newSVnv(rect[0]))); /* x0 */
XPUSHs(sv_2mortal(newSVnv(rect[1]))); /* y0 */
XPUSHs(sv_2mortal(newSVnv(rect[2]))); /* x1 */
XPUSHs(sv_2mortal(newSVnv(rect[3]))); /* y1 */
XPUSHs(sv_2mortal(newSVnv(rect[4]))); /* x2 */
XPUSHs(sv_2mortal(newSVnv(rect[5]))); /* y2 */
XPUSHs(sv_2mortal(newSVnv(rect[6]))); /* x3 */
XPUSHs(sv_2mortal(newSVnv(rect[7]))); /* y3 */
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasStipple(cdCanvas* canvas, int w, int h, const unsigned char*fgbg, double w_mm, double h_mm);
#xxxTODO/important (cdStipple)
void
wdStipple(canvas,stipple,w_mm,h_mm)
SV* canvas;
SV* stipple;
double w_mm;
double h_mm;
INIT:
int w;
int h;
unsigned char* fgbg;
CODE:
/* xxxTODO cdstipple > rawdata */
wdCanvasStipple(ref2cnv(canvas),w,h,fgbg,w_mm,h_mm);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasPattern(cdCanvas* canvas, int w, int h, const long *color, double w_mm, double h_mm);
# canvas:wPattern(pattern: cdPattern, w_mm, h_mm: number) [in Lua]
#xxxTODO/important (cdPattern)
void
wdPattern(canvas,pattern,w_mm,h_mm)
SV* canvas;
SV* pattern;
double w_mm;
double h_mm;
INIT:
int w;
int h;
const long* color;
CODE:
/* xxx convert: pattern > w/h/color */
wdCanvasPattern(ref2cnv(canvas),w,h,color,w_mm,h_mm);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasVectorTextDirection(cdCanvas* canvas, double x1, double y1, double x2, double y2);
void
wdVectorTextDirection(canvas,x1,y1,x2,y2)
SV* canvas;
double x1;
double y1;
double x2;
double y2;
CODE:
wdCanvasVectorTextDirection(ref2cnv(canvas),x1,y1,x2,y2);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasVectorTextSize(cdCanvas* canvas, double size_x, double size_y, const char* s);
void
wdVectorTextSize(canvas,size_x,size_y,s)
SV* canvas;
double size_x;
double size_y;
const char* s;
CODE:
wdCanvasVectorTextSize(ref2cnv(canvas),size_x,size_y,s);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetVectorTextSize(cdCanvas* canvas, const char* s, double *x, double *y);
# canvas:wGetVectorTextSize(text: string) -> (width, height: number) [in Lua]
#xxx DONE
void
wdGetVectorTextSize(canvas,s)
SV* canvas;
const char* s;
INIT:
double x;
double y;
PPCODE:
wdCanvasGetVectorTextSize(ref2cnv(canvas),s,&x,&y);
XPUSHs(sv_2mortal(newSVnv(x)));
XPUSHs(sv_2mortal(newSVnv(y)));
#### Original C function from <.../cd/include/wd.h>
# double wdCanvasVectorCharSize(cdCanvas* canvas, double size);
double
wdVectorCharSize(canvas,size)
SV* canvas;
double size;
CODE:
RETVAL = wdCanvasVectorCharSize(ref2cnv(canvas),size);
OUTPUT:
RETVAL
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasVectorText(cdCanvas* canvas, double x, double y, const char* s);
void
wdVectorText(canvas,x,y,s)
SV* canvas;
double x;
double y;
const char* s;
CODE:
wdCanvasVectorText(ref2cnv(canvas),x,y,s);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasMultiLineVectorText(cdCanvas* canvas, double x, double y, const char* s);
void
wdMultiLineVectorText(canvas,x,y,s)
SV* canvas;
double x;
double y;
const char* s;
CODE:
wdCanvasMultiLineVectorText(ref2cnv(canvas),x,y,s);
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetVectorTextBounds(cdCanvas* canvas, const char* s, double x, double y, double *rect);
# canvas:wGetVectorTextBounds(text: string, x, y: number) -> (rect: table) [in Lua]
#xxx DONE (table)
void
wdGetVectorTextBounds(canvas,s,x,y,rect)
SV* canvas;
const char* s;
double x;
double y;
INIT:
double rect[8];
PPCODE:
wdCanvasGetVectorTextBounds(ref2cnv(canvas),s,x,y,rect);
XPUSHs(sv_2mortal(newSVnv(rect[0]))); /* x0 */
XPUSHs(sv_2mortal(newSVnv(rect[1]))); /* y0 */
XPUSHs(sv_2mortal(newSVnv(rect[2]))); /* x1 */
XPUSHs(sv_2mortal(newSVnv(rect[3]))); /* y1 */
XPUSHs(sv_2mortal(newSVnv(rect[4]))); /* x2 */
XPUSHs(sv_2mortal(newSVnv(rect[5]))); /* y2 */
XPUSHs(sv_2mortal(newSVnv(rect[6]))); /* x3 */
XPUSHs(sv_2mortal(newSVnv(rect[7]))); /* y3 */
#### Original C function from <.../cd/include/wd.h>
# void wdCanvasGetVectorTextBox(cdCanvas* canvas, double x, double y, const char *s, double *xmin, double *xmax, double *ymin, double *ymax);
# canvas:wGetVectorTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) [in Lua]
#xxx DONE
void
wdGetVectorTextBox(canvas,x,y,s,xmin,xmax,ymin,ymax)
SV* canvas;
double x;
double y;
const char* s;
INIT:
double xmin;
double xmax;
double ymin;
double ymax;
CODE:
wdCanvasGetVectorTextBox(ref2cnv(canvas),x,y,s,&xmin,&xmax,&ymin,&ymax);
XPUSHs(sv_2mortal(newSVnv(xmin)));
XPUSHs(sv_2mortal(newSVnv(xmax)));
XPUSHs(sv_2mortal(newSVnv(ymin)));
XPUSHs(sv_2mortal(newSVnv(ymax)));