Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
}