X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpython%2Fgfx.c;h=c9f3fa28fa1ce37b9a3257a96ad68f450f3ab2e7;hb=5bfcb8ccd1c44cdea7d3438542b5fe50ec0760aa;hp=fa07f4714b24c44c12f3c7385688bd8ac9b24379;hpb=3f8f9d9ca3c5d1e1067e0de0fe06951989cd9a9c;p=swftools.git diff --git a/lib/python/gfx.c b/lib/python/gfx.c index fa07f47..c9f3fa2 100644 --- a/lib/python/gfx.c +++ b/lib/python/gfx.c @@ -25,8 +25,10 @@ #include "../devices/swf.h" #include "../devices/render.h" #include "../devices/rescale.h" +#include "../devices/text.h" #include "../pdf/pdf.h" #include "../log.h" +#include "../utf8.h" gfxsource_t*pdfdriver; @@ -67,15 +69,15 @@ static char* strf(char*format, ...) //--------------------------------------------------------------------- staticforward PyObject* output_save(PyObject* _self, PyObject* args, PyObject* kwargs); -staticforward PyObject* output_startframe(PyObject* _self, PyObject* args, PyObject* kwargs); -staticforward PyObject* output_endframe(PyObject* _self, PyObject* args, PyObject* kwargs); +staticforward PyObject* output_startpage(PyObject* _self, PyObject* args, PyObject* kwargs); +staticforward PyObject* output_endpage(PyObject* _self, PyObject* args, PyObject* kwargs); static PyMethodDef output_methods[] = { /* Output functions */ {"save", (PyCFunction)output_save, METH_KEYWORDS, ""}, - {"startframe", (PyCFunction)output_startframe, METH_KEYWORDS, ""}, - {"endframe", (PyCFunction)output_endframe, METH_KEYWORDS, ""}, + {"startpage", (PyCFunction)output_startpage, METH_KEYWORDS, ""}, + {"endpage", (PyCFunction)output_endpage, METH_KEYWORDS, ""}, {0,0,0,0} }; static PyObject* output_save(PyObject* _self, PyObject* args, PyObject* kwargs) @@ -87,13 +89,14 @@ static PyObject* output_save(PyObject* _self, PyObject* args, PyObject* kwargs) return NULL; gfxresult_t*result = self->output_device->finish(self->output_device); + self->output_device = 0; if(result->save(result, filename) < 0) { return PY_ERROR("Couldn't write to %s", filename); } result->destroy(result); return PY_NONE; } -static PyObject* output_startframe(PyObject* _self, PyObject* args, PyObject* kwargs) +static PyObject* output_startpage(PyObject* _self, PyObject* args, PyObject* kwargs) { OutputObject* self = (OutputObject*)_self; int width=0, height=0; @@ -102,7 +105,7 @@ static PyObject* output_startframe(PyObject* _self, PyObject* args, PyObject* kw self->output_device->startpage(self->output_device, width, height); return PY_NONE; } -static PyObject* output_endframe(PyObject* _self, PyObject* args, PyObject* kwargs) +static PyObject* output_endpage(PyObject* _self, PyObject* args, PyObject* kwargs) { OutputObject* self = (OutputObject*)_self; if (!PyArg_ParseTuple(args, "")) @@ -121,6 +124,30 @@ static PyObject* f_createSWF(PyObject* parent, PyObject* args, PyObject* kwargs) gfxdevice_swf_init(self->output_device); return (PyObject*)self; } +static PyObject* f_createImageList(PyObject* parent, PyObject* args, PyObject* kwargs) +{ + static char *kwlist[] = {NULL}; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "", kwlist)) + return NULL; + OutputObject*self = PyObject_New(OutputObject, &OutputClass); + + self->output_device = malloc(sizeof(gfxdevice_t)); + gfxdevice_render_init(self->output_device); + return (PyObject*)self; +} +static PyObject* f_createPlainText(PyObject* parent, PyObject* args, PyObject* kwargs) +{ + static char *kwlist[] = {NULL}; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "", kwlist)) + return NULL; + OutputObject*self = PyObject_New(OutputObject, &OutputClass); + + self->output_device = malloc(sizeof(gfxdevice_t)); + gfxdevice_text_init(self->output_device); + return (PyObject*)self; +} + + static void output_dealloc(PyObject* _self) { OutputObject* self = (OutputObject*)_self; @@ -285,11 +312,15 @@ static int page_print(PyObject * _self, FILE *fi, int flags) //--------------------------------------------------------------------- staticforward PyObject* doc_getPage(PyObject* parent, PyObject* args, PyObject* kwargs); +staticforward PyObject* doc_getInfo(PyObject* parent, PyObject* args, PyObject* kwargs); +staticforward PyObject* doc_setParameter(PyObject* parent, PyObject* args, PyObject* kwargs); static PyMethodDef doc_methods[] = { /* PDF functions */ {"getPage", (PyCFunction)doc_getPage, METH_KEYWORDS, ""}, + {"getInfo", (PyCFunction)doc_getInfo, METH_KEYWORDS, ""}, + {"setParameter", (PyCFunction)doc_setParameter, METH_KEYWORDS, ""}, {0,0,0,0} }; @@ -314,6 +345,32 @@ static PyObject* doc_getPage(PyObject* _self, PyObject* args, PyObject* kwargs) return (PyObject*)page; } +static PyObject* doc_getInfo(PyObject* _self, PyObject* args, PyObject* kwargs) +{ + DocObject* self = (DocObject*)_self; + + static char *kwlist[] = {"key", NULL}; + char*key = 0; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", kwlist, &key)) + return NULL; + + char*s = self->doc->getinfo(self->doc, key); + return PyString_FromString(s); +} + +static PyObject* doc_setParameter(PyObject* _self, PyObject* args, PyObject* kwargs) +{ + DocObject* self = (DocObject*)_self; + + static char *kwlist[] = {"key", "value", NULL}; + char*key = 0, *value=0; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss", kwlist, &key,&value)) + return NULL; + + self->doc->set_parameter(self->doc, key, value); + return PY_NONE; +} + static PyObject* f_open(PyObject* parent, PyObject* args, PyObject* kwargs) { static char *kwlist[] = {"type", "filename", NULL}; @@ -415,7 +472,17 @@ static PyObject* f_setoption(PyObject* self, PyObject* args, PyObject* kwargs) char*key=0,*value=0; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss", kwlist, &key, &value)) return NULL; - pdfdriver->set_parameter(key,value); + pdfdriver->set_parameter(pdfdriver,key,value); + return PY_NONE; +} + +static PyObject* f_verbose(PyObject* self, PyObject* args, PyObject* kwargs) +{ + static char *kwlist[] = {"val", NULL}; + int val; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i", kwlist, &val)) + return NULL; + setConsoleLogging(val); return PY_NONE; } @@ -425,7 +492,7 @@ static PyObject* f_addfont(PyObject* self, PyObject* args, PyObject* kwargs) char*filename=0; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", kwlist, &filename)) return NULL; - pdfdriver->set_parameter("font", filename); + pdfdriver->set_parameter(pdfdriver,"font", filename); return PY_NONE; } @@ -435,17 +502,25 @@ static PyObject* f_addfontdir(PyObject* self, PyObject* args, PyObject* kwargs) char*filename=0; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", kwlist, &filename)) return NULL; - pdfdriver->set_parameter("fontdir", filename); + pdfdriver->set_parameter(pdfdriver,"fontdir", filename); return PY_NONE; } static PyMethodDef pdf2swf_methods[] = { - /* module functions */ + /* sources */ {"open", (PyCFunction)f_open, METH_KEYWORDS, ""}, {"addfont", (PyCFunction)f_addfont, METH_KEYWORDS, ""}, {"addfontdir", (PyCFunction)f_addfontdir, METH_KEYWORDS, ""}, {"setoption", (PyCFunction)f_setoption, METH_KEYWORDS, ""}, + {"verbose", (PyCFunction)f_verbose, METH_KEYWORDS, ""}, + + /* devices */ + {"SWF", (PyCFunction)f_createSWF, METH_KEYWORDS, ""}, + {"ImageList", (PyCFunction)f_createImageList, METH_KEYWORDS, ""}, + {"PlainText", (PyCFunction)f_createPlainText, METH_KEYWORDS, ""}, + + /* sentinel */ {0, 0, 0, 0} };