Skip to content

Instantly share code, notes, and snippets.

@dbeecham
Created August 20, 2016 16:38
Show Gist options
  • Save dbeecham/a4b50e6ce5ea0bcc8b0dfa6bcf5a69ae to your computer and use it in GitHub Desktop.
Save dbeecham/a4b50e6ce5ea0bcc8b0dfa6bcf5a69ae to your computer and use it in GitHub Desktop.
commit 585119ed454efe10632740256b7b375a1920cd57
Author: Daniel Beecham <[email protected]>
Date: Sat Aug 20 18:21:18 2016 +0200
Implement method chaining
diff --git a/src/context.c b/src/context.c
index 984cdfc..f87665a 100644
--- a/src/context.c
+++ b/src/context.c
@@ -90,7 +90,8 @@ pycairo_append_path (PycairoContext *o, PyObject *args) {
cairo_append_path (o->ctx, p->path);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -103,7 +104,8 @@ pycairo_arc (PycairoContext *o, PyObject *args) {
cairo_arc (o->ctx, xc, yc, radius, angle1, angle2);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -116,7 +118,8 @@ pycairo_arc_negative (PycairoContext *o, PyObject *args) {
cairo_arc_negative (o->ctx, xc, yc, radius, angle1, angle2);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -125,7 +128,8 @@ pycairo_clip (PycairoContext *o) {
cairo_clip (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -142,7 +146,8 @@ pycairo_clip_preserve (PycairoContext *o) {
cairo_clip_preserve (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -151,7 +156,8 @@ pycairo_close_path (PycairoContext *o) {
cairo_close_path (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -189,7 +195,8 @@ pycairo_copy_page (PycairoContext *o) {
cairo_copy_page (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -220,7 +227,8 @@ pycairo_curve_to (PycairoContext *o, PyObject *args) {
cairo_curve_to (o->ctx, x1, y1, x2, y2, x3, y3);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -254,7 +262,8 @@ pycairo_fill (PycairoContext *o) {
cairo_fill (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -271,7 +280,8 @@ pycairo_fill_preserve (PycairoContext *o) {
cairo_fill_preserve (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -511,7 +521,8 @@ pycairo_glyph_path (PycairoContext *o, PyObject *args) {
cairo_glyph_path (o->ctx, glyphs, num_glyphs);
PyMem_Free (glyphs);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -526,7 +537,8 @@ static PyObject *
pycairo_identity_matrix (PycairoContext *o) {
cairo_identity_matrix (o->ctx);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -580,7 +592,8 @@ pycairo_line_to (PycairoContext *o, PyObject *args) {
cairo_line_to (o->ctx, x, y);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -594,7 +607,8 @@ pycairo_mask (PycairoContext *o, PyObject *args) {
cairo_mask (o->ctx, p->pattern);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -610,7 +624,8 @@ pycairo_mask_surface (PycairoContext *o, PyObject *args) {
cairo_mask_surface (o->ctx, s->surface, surface_x, surface_y);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -622,21 +637,24 @@ pycairo_move_to (PycairoContext *o, PyObject *args) {
cairo_move_to (o->ctx, x, y);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
pycairo_new_path (PycairoContext *o) {
cairo_new_path (o->ctx);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
pycairo_new_sub_path (PycairoContext *o) {
cairo_new_sub_path (o->ctx);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -645,7 +663,8 @@ pycairo_paint (PycairoContext *o) {
cairo_paint (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -659,7 +678,8 @@ pycairo_paint_with_alpha (PycairoContext *o, PyObject *args) {
cairo_paint_with_alpha (o->ctx, alpha);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -678,14 +698,16 @@ pycairo_pop_group (PycairoContext *o) {
static PyObject *
pycairo_pop_group_to_source (PycairoContext *o) {
cairo_pop_group_to_source (o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
pycairo_push_group (PycairoContext *o) {
cairo_push_group (o->ctx);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -697,7 +719,8 @@ pycairo_push_group_with_content (PycairoContext *o, PyObject *args) {
return NULL;
cairo_push_group_with_content (o->ctx, content);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -710,7 +733,8 @@ pycairo_rectangle (PycairoContext *o, PyObject *args) {
cairo_rectangle (o->ctx, x, y, width, height);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -723,7 +747,8 @@ pycairo_rel_curve_to (PycairoContext *o, PyObject *args) {
cairo_rel_curve_to (o->ctx, dx1, dy1, dx2, dy2, dx3, dy3);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -735,7 +760,8 @@ pycairo_rel_line_to (PycairoContext *o, PyObject *args) {
cairo_rel_line_to (o->ctx, dx, dy);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -747,21 +773,24 @@ pycairo_rel_move_to (PycairoContext *o, PyObject *args) {
cairo_rel_move_to (o->ctx, dx, dy);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
pycairo_reset_clip (PycairoContext *o) {
cairo_reset_clip (o->ctx);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
pycairo_restore (PycairoContext *o) {
cairo_restore (o->ctx);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -773,14 +802,16 @@ pycairo_rotate (PycairoContext *o, PyObject *args) {
cairo_rotate (o->ctx, angle);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
pycairo_save (PycairoContext *o) {
cairo_save (o->ctx);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -792,7 +823,8 @@ pycairo_scale (PycairoContext *o, PyObject *args) {
cairo_scale (o->ctx, sx, sy);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -808,7 +840,8 @@ pycairo_select_font_face (PycairoContext *o, PyObject *args) {
cairo_select_font_face (o->ctx, utf8, slant, weight);
PyMem_Free((void *)utf8);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -820,7 +853,8 @@ pycairo_set_antialias (PycairoContext *o, PyObject *args) {
cairo_set_antialias (o->ctx, antialias);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -856,7 +890,8 @@ pycairo_set_dash (PycairoContext *o, PyObject *args) {
PyMem_Free (dashes);
Py_DECREF(py_dashes);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -868,7 +903,8 @@ pycairo_set_fill_rule (PycairoContext *o, PyObject *args) {
cairo_set_fill_rule (o->ctx, fill_rule);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -884,7 +920,8 @@ pycairo_set_font_face (PycairoContext *o, PyObject *obj) {
return NULL;
}
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -897,7 +934,8 @@ pycairo_set_font_matrix (PycairoContext *o, PyObject *args) {
cairo_set_font_matrix (o->ctx, &matrix->matrix);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -910,7 +948,8 @@ pycairo_set_font_options (PycairoContext *o, PyObject *args) {
cairo_set_font_options (o->ctx, options->font_options);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -922,7 +961,8 @@ pycairo_set_font_size (PycairoContext *o, PyObject *args) {
cairo_set_font_size (o->ctx, size);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -934,7 +974,8 @@ pycairo_set_line_cap (PycairoContext *o, PyObject *args) {
cairo_set_line_cap (o->ctx, line_cap);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -946,7 +987,8 @@ pycairo_set_line_join (PycairoContext *o, PyObject *args) {
cairo_set_line_join (o->ctx, line_join);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -958,7 +1000,8 @@ pycairo_set_line_width (PycairoContext *o, PyObject *args) {
cairo_set_line_width (o->ctx, width);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -971,7 +1014,8 @@ pycairo_set_matrix (PycairoContext *o, PyObject *args) {
cairo_set_matrix (o->ctx, &matrix->matrix);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -983,7 +1027,8 @@ pycairo_set_miter_limit (PycairoContext *o, PyObject *args) {
cairo_set_miter_limit (o->ctx, limit);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -995,7 +1040,8 @@ pycairo_set_operator(PycairoContext *o, PyObject *args) {
cairo_set_operator(o->ctx, op);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1007,7 +1053,8 @@ pycairo_set_scaled_font(PycairoContext *o, PyObject *args) {
cairo_set_scaled_font(o->ctx, f->scaled_font);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1020,7 +1067,8 @@ pycairo_set_source (PycairoContext *o, PyObject *args) {
cairo_set_source (o->ctx, p->pattern);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1033,7 +1081,8 @@ pycairo_set_source_rgb (PycairoContext *o, PyObject *args) {
cairo_set_source_rgb (o->ctx, red, green, blue);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1047,7 +1096,8 @@ pycairo_set_source_rgba (PycairoContext *o, PyObject *args) {
cairo_set_source_rgba (o->ctx, red, green, blue, alpha);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1061,7 +1111,8 @@ pycairo_set_source_surface (PycairoContext *o, PyObject *args) {
cairo_set_source_surface (o->ctx, surface->surface, x, y);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1071,7 +1122,8 @@ pycairo_set_tolerance (PycairoContext *o, PyObject *args) {
return NULL;
cairo_set_tolerance (o->ctx, tolerance);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1092,7 +1144,8 @@ pycairo_show_glyphs (PycairoContext *o, PyObject *args) {
Py_END_ALLOW_THREADS;
PyMem_Free (glyphs);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1101,7 +1154,8 @@ pycairo_show_page (PycairoContext *o) {
cairo_show_page (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1117,7 +1171,8 @@ pycairo_show_text (PycairoContext *o, PyObject *args) {
PyMem_Free((void *)utf8);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1126,7 +1181,8 @@ pycairo_stroke (PycairoContext *o) {
cairo_stroke (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1143,7 +1199,8 @@ pycairo_stroke_preserve (PycairoContext *o) {
cairo_stroke_preserve (o->ctx);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1172,7 +1229,8 @@ pycairo_text_path (PycairoContext *o, PyObject *args) {
cairo_text_path (o->ctx, utf8);
PyMem_Free((void *)utf8);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1185,7 +1243,8 @@ pycairo_transform (PycairoContext *o, PyObject *args) {
cairo_transform (o->ctx, &matrix->matrix);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -1197,7 +1256,8 @@ pycairo_translate (PycairoContext *o, PyObject *args) {
cairo_translate (o->ctx, tx, ty);
RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(o->ctx);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
diff --git a/src/font.c b/src/font.c
index 6c7ca4e..4d82601 100644
--- a/src/font.c
+++ b/src/font.c
@@ -460,7 +460,8 @@ font_options_set_antialias (PycairoFontOptions *o, PyObject *args) {
cairo_font_options_set_antialias (o->font_options, aa);
RETURN_NULL_IF_CAIRO_FONT_OPTIONS_ERROR(o->font_options);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -472,7 +473,8 @@ font_options_set_hint_metrics (PycairoFontOptions *o, PyObject *args) {
cairo_font_options_set_hint_metrics (o->font_options, hm);
RETURN_NULL_IF_CAIRO_FONT_OPTIONS_ERROR(o->font_options);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -484,7 +486,8 @@ font_options_set_hint_style (PycairoFontOptions *o, PyObject *args) {
cairo_font_options_set_hint_style (o->font_options, hs);
RETURN_NULL_IF_CAIRO_FONT_OPTIONS_ERROR(o->font_options);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -496,7 +499,8 @@ font_options_set_subpixel_order (PycairoFontOptions *o, PyObject *args) {
cairo_font_options_set_subpixel_order (o->font_options, so);
RETURN_NULL_IF_CAIRO_FONT_OPTIONS_ERROR(o->font_options);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
diff --git a/src/matrix.c b/src/matrix.c
index 24f6e4a..4ab26e8 100644
--- a/src/matrix.c
+++ b/src/matrix.c
@@ -76,7 +76,8 @@ static PyObject *
matrix_invert (PycairoMatrix *o) {
if (Pycairo_Check_Status (cairo_matrix_invert (&o->matrix)))
return NULL;
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
/* cairo_matrix_multiply */
@@ -145,7 +146,8 @@ matrix_rotate (PycairoMatrix *o, PyObject *args) {
return NULL;
cairo_matrix_rotate (&o->matrix, radians);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -156,7 +158,8 @@ matrix_scale (PycairoMatrix *o, PyObject *args) {
return NULL;
cairo_matrix_scale (&o->matrix, sx, sy);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -189,7 +192,8 @@ matrix_translate (PycairoMatrix *o, PyObject *args) {
return NULL;
cairo_matrix_translate (&o->matrix, tx, ty);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
diff --git a/src/pattern.c b/src/pattern.c
index 9daf5c4..0a2f19c 100644
--- a/src/pattern.c
+++ b/src/pattern.c
@@ -121,7 +121,8 @@ pattern_set_extend (PycairoPattern *o, PyObject *args) {
return NULL;
cairo_pattern_set_extend (o->pattern, extend);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -133,7 +134,8 @@ pattern_set_matrix (PycairoPattern *o, PyObject *args) {
return NULL;
cairo_pattern_set_matrix (o->pattern, &m->matrix);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyMethodDef pattern_methods[] = {
@@ -305,7 +307,8 @@ surface_pattern_set_filter (PycairoSurfacePattern *o, PyObject *args) {
return NULL;
cairo_pattern_set_filter (o->pattern, filter);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyMethodDef surface_pattern_methods[] = {
@@ -378,7 +381,8 @@ gradient_add_color_stop_rgb (PycairoGradient *o, PyObject *args) {
return NULL;
cairo_pattern_add_color_stop_rgb (o->pattern, offset, red, green, blue);
RETURN_NULL_IF_CAIRO_PATTERN_ERROR(o->pattern);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -390,7 +394,8 @@ gradient_add_color_stop_rgba (PycairoGradient *o, PyObject *args) {
cairo_pattern_add_color_stop_rgba (o->pattern, offset, red,
green, blue, alpha);
RETURN_NULL_IF_CAIRO_PATTERN_ERROR(o->pattern);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyMethodDef gradient_methods[] = {
diff --git a/src/region.c b/src/region.c
index 2198ccd..c4ef05b 100644
--- a/src/region.c
+++ b/src/region.c
@@ -414,7 +414,8 @@ region_translate (PycairoRegion *o, PyObject *args) {
Py_BEGIN_ALLOW_THREADS;
cairo_region_translate (o->region, x, y);
Py_END_ALLOW_THREADS;
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
@@ -443,7 +444,8 @@ region_intersect (PycairoRegion *o, PyObject *args) {
}
RETURN_NULL_IF_CAIRO_ERROR(res);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
PyObject *
@@ -470,7 +472,8 @@ region_subtract (PycairoRegion *o, PyObject *args) {
return NULL;
}
RETURN_NULL_IF_CAIRO_ERROR(res);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
PyObject *
@@ -497,7 +500,8 @@ region_union (PycairoRegion *o, PyObject *args) {
return NULL;
}
RETURN_NULL_IF_CAIRO_ERROR(res);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
PyObject *
@@ -524,7 +528,8 @@ region_xor (PycairoRegion *o, PyObject *args) {
return NULL;
}
RETURN_NULL_IF_CAIRO_ERROR(res);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyMethodDef region_methods[] = {
diff --git a/src/surface.c b/src/surface.c
index 204af68..c8da15e 100644
--- a/src/surface.c
+++ b/src/surface.c
@@ -185,7 +185,8 @@ surface_copy_page (PycairoSurface *o) {
cairo_surface_copy_page (o->surface);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -220,7 +221,8 @@ surface_finish (PycairoSurface *o) {
cairo_surface_finish (o->surface);
Py_CLEAR(o->base);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -229,7 +231,8 @@ surface_flush (PycairoSurface *o) {
cairo_surface_flush (o->surface);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -264,7 +267,8 @@ static PyObject *
surface_mark_dirty (PycairoSurface *o) {
cairo_surface_mark_dirty (o->surface);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -277,7 +281,8 @@ surface_mark_dirty_rectangle (PycairoSurface *o, PyObject *args) {
cairo_surface_mark_dirty_rectangle (o->surface, x, y, width, height);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -289,7 +294,8 @@ surface_set_device_offset (PycairoSurface *o, PyObject *args) {
return NULL;
cairo_surface_set_device_offset (o->surface, x_offset, y_offset);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -300,7 +306,8 @@ surface_set_fallback_resolution (PycairoSurface *o, PyObject *args) {
&x_ppi, &y_ppi))
return NULL;
cairo_surface_set_fallback_resolution (o->surface, x_ppi, y_ppi);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -309,7 +316,8 @@ surface_show_page (PycairoSurface *o) {
cairo_surface_show_page (o->surface);
Py_END_ALLOW_THREADS;
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
#ifdef CAIRO_HAS_PNG_FUNCTIONS
@@ -351,7 +359,8 @@ surface_write_to_png (PycairoSurface *o, PyObject *args) {
Py_END_ALLOW_THREADS;
}
RETURN_NULL_IF_CAIRO_ERROR(status);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
#endif /* CAIRO_HAS_PNG_FUNCTIONS */
@@ -765,7 +774,8 @@ pdf_surface_restrict_to_version (PycairoPDFSurface *o, PyObject *args) {
return NULL;
cairo_pdf_surface_restrict_to_version (o->surface, version);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -777,7 +787,8 @@ pdf_surface_set_size (PycairoPDFSurface *o, PyObject *args) {
return NULL;
cairo_pdf_surface_set_size (o->surface, width_in_points,
height_in_points);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
/* METH_STATIC */
@@ -913,14 +924,16 @@ static PyObject *
ps_surface_dsc_begin_page_setup (PycairoPSSurface *o) {
cairo_ps_surface_dsc_begin_page_setup (o->surface);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
ps_surface_dsc_begin_setup (PycairoPSSurface *o) {
cairo_ps_surface_dsc_begin_setup (o->surface);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -930,7 +943,8 @@ ps_surface_dsc_comment (PycairoPSSurface *o, PyObject *args) {
return NULL;
cairo_ps_surface_dsc_comment (o->surface, comment);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -963,7 +977,8 @@ ps_surface_restrict_to_level (PycairoPSSurface *o, PyObject *args) {
return NULL;
cairo_ps_surface_restrict_to_level (o->surface, level);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -974,7 +989,8 @@ ps_surface_set_eps (PycairoPSSurface *o, PyObject *args) {
return NULL;
cairo_ps_surface_set_eps (o->surface, (py_eps == Py_True));
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyObject *
@@ -985,7 +1001,8 @@ ps_surface_set_size (PycairoPSSurface *o, PyObject *args) {
&width_in_points, &height_in_points))
return NULL;
cairo_ps_surface_set_size (o->surface, width_in_points, height_in_points);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
static PyMethodDef ps_surface_methods[] = {
@@ -1207,7 +1224,8 @@ svg_surface_restrict_to_version (PycairoSVGSurface *o, PyObject *args) {
return NULL;
cairo_svg_surface_restrict_to_version (o->surface, version);
RETURN_NULL_IF_CAIRO_SURFACE_ERROR(o->surface);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
/* METH_STATIC */
@@ -1496,7 +1514,8 @@ xcb_surface_set_size (PycairoXCBSurface *o, PyObject *args) {
if (!PyArg_ParseTuple(args, "ii:XCBSurface.set_size", &width, &height))
return NULL;
cairo_xcb_surface_set_size (o->surface, width, height);
- Py_RETURN_NONE;
+ Py_INCREF(o);
+ return (PyObject *)o;
}
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment