diff options
Diffstat (limited to 'pangocairo.override')
-rw-r--r-- | pangocairo.override | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/pangocairo.override b/pangocairo.override new file mode 100644 index 00000000..75650c16 --- /dev/null +++ b/pangocairo.override @@ -0,0 +1,253 @@ +/* -*- Mode: C; c-basic-offset: 4 -*- */ +%% +headers +#define NO_IMPORT_PYGOBJECT +#include <pygobject.h> +#include <pango/pangocairo.h> +#include <pycairo.h> + + +extern Pycairo_CAPI_t *Pycairo_CAPI; + +GType pypango_layout_line_type; /* See bug 305975 */ + +#ifndef PANGO_TYPE_LAYOUT_LINE +# define PANGO_TYPE_LAYOUT_LINE pypango_layout_line_type +#endif + +%% +import pango.FontMap as PyPangoFontMap_Type +import pango.Context as PyPangoContext_Type +import pango.Layout as PyPangoLayout_Type +import pango.Font as PyPangoFont_Type + +%% +body + +static PyObject * +pypango_cairo_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *o; + PycairoContext *ctx; + + if (!PyArg_ParseTuple(args, "O!:CairoContext.__new__", + &PycairoContext_Type, &ctx)) + return NULL; + + cairo_reference(ctx->ctx); + o = PycairoContext_FromContext(ctx->ctx, type, NULL); + return o; +} + +static PyObject * +_wrap_pango_cairo_update_context(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "context", NULL }; + PyGObject *context; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:CairoContext.update_context", kwlist, + &PyPangoContext_Type, &context)) + return NULL; + pango_cairo_update_context(PycairoContext_GET(self), PANGO_CONTEXT(context->obj)); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_wrap_pango_cairo_create_layout(PyGObject *self) +{ + PangoLayout *ret; + + ret = pango_cairo_create_layout(PycairoContext_GET(self)); + /* pygobject_new handles NULL checking */ + return pygobject_new((GObject *)ret); +} + +static PyObject * +_wrap_pango_cairo_update_layout(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "layout", NULL }; + PyGObject *layout; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:CairoContext.update_layout", + kwlist, &PyPangoLayout_Type, &layout)) + return NULL; + pango_cairo_update_layout(PycairoContext_GET(self), PANGO_LAYOUT(layout->obj)); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_wrap_pango_cairo_show_glyph_string(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "font", "glyphs", NULL }; + PyGObject *font; + PangoGlyphString *glyphs = NULL; + PyObject *py_glyphs; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O:CairoContext.show_glyph_string", + kwlist, &PyPangoFont_Type, &font, &py_glyphs)) + return NULL; + if (pyg_boxed_check(py_glyphs, PANGO_TYPE_GLYPH_STRING)) + glyphs = pyg_boxed_get(py_glyphs, PangoGlyphString); + else { + PyErr_SetString(PyExc_TypeError, "glyphs should be a PangoGlyphString"); + return NULL; + } + pango_cairo_show_glyph_string(PycairoContext_GET(self), PANGO_FONT(font->obj), glyphs); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_wrap_pango_cairo_show_layout_line(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "line", NULL }; + PangoLayoutLine *line = NULL; + PyObject *py_line; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:CairoContext.show_layout_line", + kwlist, &py_line)) + return NULL; + if (pyg_boxed_check(py_line, PANGO_TYPE_LAYOUT_LINE)) + line = pyg_boxed_get(py_line, PangoLayoutLine); + else { + PyErr_SetString(PyExc_TypeError, "line should be a PangoLayoutLine"); + return NULL; + } + pango_cairo_show_layout_line(PycairoContext_GET(self), line); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_wrap_pango_cairo_show_layout(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "layout", NULL }; + PyGObject *layout; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:CairoContext.show_layout", + kwlist, &PyPangoLayout_Type, &layout)) + return NULL; + pango_cairo_show_layout(PycairoContext_GET(self), PANGO_LAYOUT(layout->obj)); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_wrap_pango_cairo_glyph_string_path(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "font", "glyphs", NULL }; + PyGObject *font; + PangoGlyphString *glyphs = NULL; + PyObject *py_glyphs; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O:CairoContext.glyph_string_path", + kwlist, &PyPangoFont_Type, &font, &py_glyphs)) + return NULL; + if (pyg_boxed_check(py_glyphs, PANGO_TYPE_GLYPH_STRING)) + glyphs = pyg_boxed_get(py_glyphs, PangoGlyphString); + else { + PyErr_SetString(PyExc_TypeError, "glyphs should be a PangoGlyphString"); + return NULL; + } + pango_cairo_glyph_string_path(PycairoContext_GET(self), PANGO_FONT(font->obj), glyphs); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_wrap_pango_cairo_layout_line_path(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "line", NULL }; + PangoLayoutLine *line = NULL; + PyObject *py_line; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:CairoContext.layout_line_path", + kwlist, &py_line)) + return NULL; + if (pyg_boxed_check(py_line, PANGO_TYPE_LAYOUT_LINE)) + line = pyg_boxed_get(py_line, PangoLayoutLine); + else { + PyErr_SetString(PyExc_TypeError, "line should be a PangoLayoutLine"); + return NULL; + } + pango_cairo_layout_line_path(PycairoContext_GET(self), line); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +_wrap_pango_cairo_layout_path(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "layout", NULL }; + PyGObject *layout; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:CairoContext.layout_path", + kwlist, &PyPangoLayout_Type, &layout)) + return NULL; + pango_cairo_layout_path(PycairoContext_GET(self), PANGO_LAYOUT(layout->obj)); + Py_INCREF(Py_None); + return Py_None; +} + +static PyMethodDef _PyCairoContext_methods[] = { + { "update_context", (PyCFunction)_wrap_pango_cairo_update_context, METH_VARARGS|METH_KEYWORDS }, + { "create_layout", (PyCFunction)_wrap_pango_cairo_create_layout, METH_NOARGS }, + { "update_layout", (PyCFunction)_wrap_pango_cairo_update_layout, METH_VARARGS|METH_KEYWORDS }, + { "show_glyph_string", (PyCFunction)_wrap_pango_cairo_show_glyph_string, METH_VARARGS|METH_KEYWORDS }, + { "show_layout_line", (PyCFunction)_wrap_pango_cairo_show_layout_line, METH_VARARGS|METH_KEYWORDS }, + { "show_layout", (PyCFunction)_wrap_pango_cairo_show_layout, METH_VARARGS|METH_KEYWORDS }, + { "glyph_string_path", (PyCFunction)_wrap_pango_cairo_glyph_string_path, METH_VARARGS|METH_KEYWORDS }, + { "layout_line_path", (PyCFunction)_wrap_pango_cairo_layout_line_path, METH_VARARGS|METH_KEYWORDS }, + { "layout_path", (PyCFunction)_wrap_pango_cairo_layout_path, METH_VARARGS|METH_KEYWORDS }, + { NULL, NULL, 0 } +}; + + +PyTypeObject PyPangoCairoContext_Type = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + "pangocairo.CairoContext", /* tp_name */ + 0, /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)0, /* tp_dealloc */ + (printfunc)0, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ + (cmpfunc)0, /* tp_compare */ + (reprfunc)0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)0, /* tp_str */ + (getattrofunc)0, /* tp_getattro */ + (setattrofunc)0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + "A cairo.Context enhanced with some additional pango methods", /* Documentation string */ + (traverseproc)0, /* tp_traverse */ + (inquiry)0, /* tp_clear */ + (richcmpfunc)0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + (getiterfunc)0, /* tp_iter */ + (iternextfunc)0, /* tp_iternext */ + _PyCairoContext_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + (PyTypeObject *)0, /* tp_base */ + (PyObject *)0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + (initproc)0, /* tp_init */ + 0, /* tp_alloc */ + pypango_cairo_new, /* tp_new */ + 0, /* tp_free */ + (inquiry)0, /* tp_is_gc */ + (PyObject *)0, /* tp_bases */ +}; + |