static PyObject * image_create(PyObject *self, PyObject *args) { int x, y; int totalx = -1, totaly = -1; if(!PyArg_ParseTuple(args,"ii|ii",&x,&y,&totalx, &totaly)) { return NULL; } IImage *i = new image(); #ifdef DEBUG_CREATION printf("%p : IM : CTOR\n",i); #endif i->set_resolution(x,y,totalx, totaly); if(! i->ok()) { PyErr_SetString(PyExc_MemoryError, "Image too large"); delete i; return NULL; } PyObject *pyret = PyCObject_FromVoidPtr(i,(void (*)(void *))image_delete); return pyret; }
static PyObject * image_resize(PyObject *self, PyObject *args) { int x, y; int totalx=-1, totaly=-1; PyObject *pyim; if(!PyArg_ParseTuple(args,"Oiiii",&pyim,&x,&y,&totalx,&totaly)) { return NULL; } IImage *i = (IImage *)PyCObject_AsVoidPtr(pyim); if(NULL == i) { return NULL; } i->set_resolution(x,y,totalx,totaly); if(! i->ok()) { PyErr_SetString(PyExc_MemoryError, "Image too large"); return NULL; } Py_INCREF(Py_None); return Py_None; }
static PyObject * fw_create(PyObject *self, PyObject *args) { int nThreads; pf_obj *pfo; ColorMap *cmap; IImage *im; IFractalSite *site; PyObject *pypfo, *pycmap, *pyim, *pysite; if(!PyArg_ParseTuple(args,"iOOOO", &nThreads, &pypfo, &pycmap, &pyim, &pysite)) { return NULL; } cmap = (ColorMap *)PyCObject_AsVoidPtr(pycmap); pfo = ((pfHandle *)PyCObject_AsVoidPtr(pypfo))->pfo; im = (IImage *)PyCObject_AsVoidPtr(pyim); site = (IFractalSite *)PyCObject_AsVoidPtr(pysite); if(!cmap || !pfo || !im || !im->ok() || !site) { return NULL; } IFractWorker *worker = IFractWorker::create(nThreads,pfo,cmap,im,site); if(!worker->ok()) { PyErr_SetString(PyExc_ValueError,"Error creating worker"); delete worker; return NULL; } PyObject *pyret = PyCObject_FromVoidPtr( worker,(void (*)(void *))fw_delete); return pyret; }