C API参考¶
这本手册记录了C和C++程序员使用的API,他们希望编写使用Pycayro的扩展模块。
pycairo编译器标志¶
要使用pycairo编译python扩展,您需要知道pycairo和cairo的位置以及要传递给编译器和链接器的标志。
变体:
仅在1.16.0版之后可用。
当pycairo安装pkg配置文件时,如果是virtualenvs、安装到用户目录或使用wheels/eggs,pkg config将无法定位.pc文件。这个
get_include()
只要pycairo在您的python搜索路径中,函数在所有情况下都可以工作。- 编译器标志:
python -c "import cairo; print(cairo.get_include())"
pkg-config --cflags cairo
- 链接器标志:
pkg-config --libs cairo
变体:
这适用于旧版本,但有上述限制。如果您想要支持旧版本或者您的模块不需要virtualenv/pip支持,可以将其用作回退。
- 编译器标志:
pkg-config --cflags pycairo
orpkg-config --cflags py3cairo
- 链接器标志:
pkg-config --libs pycairo
orpkg-config --libs py3cairo
访问python 3下的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;
}
如果您想使用来自另一个编译单元的API:
#define PYCAIRO_NO_IMPORT
#include <py3cairo.h>
...
在 1.17.0 版本加入: 这个 PYCAIRO_NO_IMPORT
自1.17.0起使用宏
其他功能¶
-
int Pycairo_Check_Status(cairo_status_t status)¶
- 参数:
status (cairo_status_t) --
- 返回:
-如果出现错误,则为1,否则为0。在发生错误时设置异常。
获取状态值,如果它表示错误状态,则将其转换为异常。
Cairo 上下文¶
-
cairo_t *PycairoContext.ctx¶
包裹
cairo_t
-
typedef PyTypeObject *PycairoContext_Type¶
-
PycairoContext_GET(obj)¶
- 参数:
obj (PycairoContext) --
- 返回:
cairo_t
[transfer none]
得到
cairo_t
对象超出PycairoContext
.
-
PyObject *PycairoContext_FromContext(cairo_t *ctx, PyTypeObject *type, PyObject *base)¶
- 参数:
ctx (cairo_t) -- Cairo 将“包装”成一个python对象。如果pycaioContext创建失败,或者cairo的状态为“错误”,则不会被引用。 [传输已满]
type (PyTypeObject) -- 指向要实例化的类型的指针。它可以是&pycaioContext_类型,也可以是pycaioContext_类型子类型。(cairo.context或cairo.context子类) [无转移]
base (PyObject) -- 用于创建上下文的基对象,或为空。它被用来在 Cairo 使用时保持它的活力。 [无转移]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从
cairo_t
Cairo 字体¶
-
cairo_font_face_t *PycairoFontFace.font_face¶
-
typedef PyTypeObject *PycairoFontFace_Type¶
-
PyObject *PycairoFontFace_FromFontFace(cairo_font_face_t *font_face)¶
- 参数:
font_face (cairo_font_face_t) -- Cairo 字体要“包装”成一个python对象。如果pycairoftface创建失败,则不会被引用。 [传输已满]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从 Cairo 字体创建新的pycairofontface
-
typedef PycairoFontFace PycairoToyFontFace¶
-
typedef PyTypeObject *PycairoToyFontFace_Type¶
Cairo 字体选项¶
-
cairo_font_options_t *PycairoFontOptions.font_options¶
-
typedef PyTypeObject *PycairoFontOptions_Type¶
-
PyObject *PycairoFontOptions_FromFontOptions(cairo_font_options_t *font_options)¶
- 参数:
font_options (cairo_font_options_t) -- Cairo 字体选项“包装”成一个python对象。如果pycairofontOptions创建失败,则不会被引用。 [传输已满]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从cairo字体选项创建新的pycairofontoptions
Cairo 矩阵¶
-
cairo_matrix_t PycairoMatrix.matrix¶
-
typedef PyTypeObject *PycairoMatrix_Type¶
-
PyObject *PycairoMatrix_FromMatrix(const cairo_matrix_t *matrix)¶
- 参数:
matrix (cairo_matrix_t) -- Cairo 矩阵“包装”成一个python对象。复制cairo矩阵的值。 [无转移]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从 Cairo 矩阵创建新的Pyciaromatrix
Cairo 之路¶
-
cairo_path_t *PycairoPath.path¶
-
typedef PyTypeObject *PycairoPath_Type¶
-
PyObject *PycairoPath_FromPath(cairo_path_t *path)¶
- 参数:
path (cairo_path_t) -- Cairo 路径“包装”成一个python对象。如果pycaiopath创建失败,或者路径处于错误状态,则不引用路径。 [传输已满]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从cairo路径创建新的pycaiopath
Cairo 图案¶
-
cairo_pattern_t *PycairoPattern.pattern¶
-
typedef PyTypeObject *PycairoPattern_Type¶
-
typedef PycairoPattern PycairoSolidPattern¶
-
typedef PyTypeObject *PycairoSolidPattern_Type¶
-
typedef PycairoPattern PycairoSurfacePattern¶
-
typedef PyTypeObject *PycairoSurfacePattern_Type¶
-
typedef PycairoPattern PycairoGradient¶
-
typedef PyTypeObject *PycairoGradient_Type¶
-
typedef PycairoGradient PycairoLinearGradient¶
-
typedef PyTypeObject *PycairoLinearGradient_Type¶
-
typedef PycairoGradient PycairoRadialGradient¶
-
typedef PyTypeObject *PycairoRadialGradient_Type¶
-
PyObject *PycairoPattern_FromPattern(cairo_pattern_t *pattern, PyObject *base)¶
- 参数:
pattern (cairo_pattern_t) -- Cairo 模式“包装”成一个python对象。如果pycaiopattern创建失败,或者模式具有错误状态,则不会被引用。 [传输已满]
base (PyObject) -- 用于创建模式的基对象,或为空。当使用 Cairo 模式时,它被引用以使其保持活动状态。 [无转移]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从cairo模式创建新的pycaiorosolidpattern、pycaiorosurfacepattern、pycaiorolineargradient或pycaiorradialgradient。
Cairo 地区¶
-
cairo_region_t *PycairoRegion.region¶
-
typedef PyTypeObject *PycairoRegion_Type¶
-
PyObject *PycairoRegion_FromRegion(cairo_region_t *region)¶
- 参数:
region (cairo_region_t) -- Cairo 区域“包装”成一个python对象。如果PyciaorRegion创建失败或区域处于错误状态,则区域未被引用。
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从 Cairo 地区创建新的pycairoregion
Cairo 矩形¶
-
cairo_rectangle_int_t *PycairoRectangleInt.rectangle_int¶
-
typedef PyTypeObject *PycairoRectangleInt_Type¶
-
PyObject *PycairoRectangleInt_FromRectangleInt(const cairo_rectangle_int_t *rectangle_int)¶
- 参数:
rectangle_int (cairo_rectangle_int_t) -- 一个 Cairo 矩形,用于“包装”成一个python对象。如果PyciaRorectAngleInt创建失败,则不引用矩形int。 [无转移]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从cairo矩形创建新的pycairorectangleint
缩放字体¶
-
cairo_scaled_font_t *PycairoScaledFont.scaled_font¶
-
typedef PyTypeObject *PycairoScaledFont_Type¶
-
PyObject *PycairoScaledFont_FromScaledFont(cairo_scaled_font_t *scaled_font)¶
- 参数:
scaled_font (cairo_scaled_font_t) -- 一个cairo将字体缩放为“wrap”成一个python对象。如果PyciaroscaledFont创建失败,则不会被引用。 [传输已满]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从 Cairo 的缩放字体创建一个新的pycairoscaledfont
Cairo 地表¶
-
cairo_surface_t *PycairoSurface.surface¶
-
typedef PyTypeObject *PycairoSurface_Type¶
-
typedef PycairoSurface PycairoImageSurface¶
-
typedef PyTypeObject *PycairoImageSurface_Type¶
-
typedef PycairoSurface PycairoPDFSurface¶
-
typedef PyTypeObject *PycairoPDFSurface_Type¶
-
typedef PycairoSurface PycairoPSSurface¶
-
typedef PyTypeObject *PycairoPSSurface_Type¶
-
typedef PycairoSurface PycairoRecordingSurface¶
-
typedef PyTypeObject *PycairoRecordingSurface_Type¶
-
typedef PycairoSurface PycairoSVGSurface¶
-
typedef PyTypeObject *PycairoSVGSurface_Type¶
-
typedef PycairoSurface PycairoWin32Surface¶
-
typedef PyTypeObject *PycairoWin32Surface_Type¶
-
typedef PycairoSurface PycairoXCBSurface¶
-
typedef PyTypeObject *PycairoXCBSurface_Type¶
-
typedef PycairoSurface PycairoXlibSurface¶
-
typedef PyTypeObject *PycairoXlibSurface_Type¶
-
PyObject *PycairoSurface_FromSurface(cairo_surface_t *surface, PyObject *base)¶
- 参数:
surface (cairo_surface_t) -- 一个cairo曲面,用于“包装”成python对象。如果pycaiosurface创建失败,或者cairo曲面具有错误状态,则不会被引用。 [传输已满]
base (PyObject) -- 用于创建曲面的基本对象,或为空。它被用来在 Cairo 地表使用时保持其活力。 [无转移]
- 返回:
失败时为新引用或空,并设置异常 [传输已满]
从 Cairo 曲面创建新的PyciaRoImageSurface、PyciaRopDfsurface、PyciaRopssurface、PyciaRorRecordingSurface、PyciaRowsvgSurface、PyciaRowin32Surface、PyciaRowin32PrintingSurface、PyciaRoxCbSurface或PyciaRoxLibSurface。
Cairo 类型¶
这些仅在此处列出,以便在文档中引用。
详情请参见https://www.cairographics.org/manual/。
CPython类型¶
-
type PyObject¶
-
type PyTypeObject¶