static PyObject * scaled_font_text_extents (PycairoScaledFont *o, PyObject *obj) { cairo_text_extents_t extents; PyObject *pyUTF8 = NULL; const char *utf8 = NULL; /* accept str and unicode text, auto convert to utf8 as required */ if (PyString_Check(obj)) { /* A plain ASCII string is also a valid UTF-8 string */ utf8 = PyString_AS_STRING(obj); } else if (PyUnicode_Check(obj)) { pyUTF8 = PyUnicode_AsUTF8String(obj); if (pyUTF8 != NULL) { utf8 = PyString_AS_STRING(pyUTF8); } } else { PyErr_SetString(PyExc_TypeError, "ScaledFont.text_extents: text must be str or unicode"); } if (utf8 == NULL) return NULL; cairo_scaled_font_text_extents (o->scaled_font, utf8, &extents); Py_XDECREF(pyUTF8); RETURN_NULL_IF_CAIRO_SCALED_FONT_ERROR(o->scaled_font); return Py_BuildValue("(dddddd)", extents.x_bearing, extents.y_bearing, extents.width, extents.height, extents.x_advance, extents.y_advance); }
static PyObject * scaled_font_extents (PycairoScaledFont *o) { cairo_font_extents_t e; cairo_scaled_font_extents (o->scaled_font, &e); RETURN_NULL_IF_CAIRO_SCALED_FONT_ERROR(o->scaled_font); return Py_BuildValue ("(ddddd)", e.ascent, e.descent, e.height, e.max_x_advance, e.max_y_advance); }