Pycairo 的 C API

这篇手册描述了给那些想使用pycairo来写扩展模块的C和C++程序员使用的API。

访问Pycairo 的 C API

下面的例子展示了如何导入 pycairo的API:

#include "py3cairo.h"

PyMODINIT_FUNC
PyInit_client(void)
{
  PyObject *m;

  m = PyModule_Create(&clientmodule);
  if (m == NULL)
      return NULL;
  if (import_cairo() < 0)
      return NULL;
  /* additional initialization can happen here */
  return m;
}

Pycairo 对象

Objects:

PycairoContext
PycairoFontFace
PycairoToyFontFace
PycairoFontOptions
PycairoMatrix
PycairoPath
PycairoPattern
PycairoSolidPattern
PycairoSurfacePattern
PycairoGradient
PycairoLinearGradient
PycairoRadialGradient
PycairoScaledFont
PycairoSurface
PycairoImageSurface
PycairoPDFSurface
PycairoPSSurface
PycairoSVGSurface
PycairoWin32Surface
PycairoXCBSurface
PycairoXlibSurface

Pycairo Types

Types:

PyTypeObject *Context_Type;
PyTypeObject *FontFace_Type;
PyTypeObject *ToyFontFace_Type;
PyTypeObject *FontOptions_Type;
PyTypeObject *Matrix_Type;
PyTypeObject *Path_Type;
PyTypeObject *Pattern_Type;
PyTypeObject *SolidPattern_Type;
PyTypeObject *SurfacePattern_Type;
PyTypeObject *Gradient_Type;
PyTypeObject *LinearGradient_Type;
PyTypeObject *RadialGradient_Type;
PyTypeObject *ScaledFont_Type;
PyTypeObject *Surface_Type;
PyTypeObject *ImageSurface_Type;
PyTypeObject *PDFSurface_Type;
PyTypeObject *PSSurface_Type;
PyTypeObject *SVGSurface_Type;
PyTypeObject *Win32Surface_Type;
PyTypeObject *XCBSurface_Type;
PyTypeObject *XlibSurface_Type;

Functions

cairo_t * PycairoContext_GET(obj)

从PycairoContext获取C语言的cairo_t 对象

PyObject * PycairoContext_FromContext(cairo_t *ctx, PyTypeObject *type, PyObject *base)
PyObject * PycairoFontFace_FromFontFace(cairo_font_face_t *font_face)
PyObject * PycairoFontOptions_FromFontOptions(cairo_font_options_t *font_options)
PyObject * PycairoMatrix_FromMatrix(const cairo_matrix_t *matrix)
PyObject * PycairoPath_FromPath(cairo_path_t *path)
PyObject * PycairoPattern_FromPattern(cairo_pattern_t *pattern, PyObject *base)
PyObject * PycairoScaledFont_FromScaledFont(cairo_scaled_font_t *scaled_font)
PyObject * PycairoSurface_FromSurface(cairo_surface_t *surface, PyObject *base)
int PycairoCheck_Status(cairo_status_t status)