C API參考?

這本手冊記錄了C和C++程序員使用的API,他們希望編寫使用Pycayro的擴展模塊。

pycairo編譯器標志?

要使用pycairo編譯python擴展,您需要知道pycairo和cairo的位置以及要傳遞給編譯器和鏈接器的標志。

  1. 變體:

    僅在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

  2. 變體:

    這適用于舊版本,但有上述限制。如果您想要支持舊版本或者您的模塊不需要virtualenv/pip支持,可以將其用作回退。

    編譯器標志:
    • pkg-config --cflags pycairo or pkg-config --cflags py3cairo

    鏈接器標志:
    • pkg-config --libs pycairo or pkg-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)?
參數:
返回:

-如果出現錯誤,則為1,否則為0。在發生錯誤時設置異常。

獲取狀態值,如果它表示錯誤狀態,則將其轉換為異常。

Cairo 上下文?

typedef PyObject PycairoContext?
cairo_t *PycairoContext.ctx?

包裹 cairo_t

typedef PyTypeObject *PycairoContext_Type?
PycairoContext_GET(obj)?
參數:
返回:

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 字體?

typedef PyObject PycairoFontFace?
cairo_font_face_t *PycairoFontFace.font_face?

包裹 cairo_font_face_t

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 字體選項?

typedef PyObject PycairoFontOptions?
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 矩陣?

typedef PyObject PycairoMatrix?
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 之路?

typedef PyObject PycairoPath?
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 圖案?

typedef PyObject PycairoPattern?
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 地區?

typedef PyObject PycairoRegion?
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 矩形?

typedef PyObject PycairoRectangleInt?
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

縮放字體?

typedef PyObject PycairoScaledFont?
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 地表?

typedef PyObject PycairoSurface?
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/。

type cairo_t?
type cairo_status_t?
type cairo_surface_t?
type cairo_scaled_font_t?
type cairo_rectangle_int_t?
type cairo_region_t?
type cairo_pattern_t?
type cairo_matrix_t?
type cairo_font_options_t?
type cairo_path_t?
type cairo_font_face_t?

CPython類型?

type PyObject?
type PyTypeObject?