summaryrefslogtreecommitdiff
path: root/src/private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/private.h')
-rw-r--r--src/private.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/private.h b/src/private.h
new file mode 100644
index 0000000..5951104
--- /dev/null
+++ b/src/private.h
@@ -0,0 +1,161 @@
+/* -*- mode: C; c-basic-offset: 2 -*-
+ *
+ * Pycairo - Python bindings for cairo
+ *
+ * Copyright © 2003 James Henstridge, Steven Chaplin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ */
+
+#ifndef _PYCAIRO_PRIVATE_H_
+#define _PYCAIRO_PRIVATE_H_
+
+#ifdef _PYCAIRO_H_
+# error "don't include pycairo.h and pycairo-private.h together"
+#endif
+
+#define _INSIDE_PYCAIRO_
+#include <Python.h>
+
+#include "pycairo.h"
+
+
+extern PyObject *CairoError;
+
+extern PyTypeObject PycairoContext_Type;
+PyObject *PycairoContext_FromContext (cairo_t *ctx, PyTypeObject *type,
+ PyObject *base);
+
+extern PyTypeObject PycairoFontFace_Type;
+extern PyTypeObject PycairoToyFontFace_Type;
+PyObject *PycairoFontFace_FromFontFace (cairo_font_face_t *font_face);
+
+extern PyTypeObject PycairoFontOptions_Type;
+PyObject *PycairoFontOptions_FromFontOptions (
+ cairo_font_options_t *font_options);
+
+extern PyTypeObject PycairoMatrix_Type;
+PyObject *PycairoMatrix_FromMatrix (const cairo_matrix_t *matrix);
+
+extern PyTypeObject PycairoPath_Type;
+PyObject *PycairoPath_FromPath (cairo_path_t *path);
+
+extern PyTypeObject PycairoPathiter_Type;
+
+extern PyTypeObject PycairoPattern_Type;
+extern PyTypeObject PycairoSolidPattern_Type;
+extern PyTypeObject PycairoSurfacePattern_Type;
+extern PyTypeObject PycairoGradient_Type;
+extern PyTypeObject PycairoLinearGradient_Type;
+extern PyTypeObject PycairoRadialGradient_Type;
+PyObject *PycairoPattern_FromPattern (cairo_pattern_t *pattern,
+ PyObject *base);
+
+extern PyTypeObject PycairoScaledFont_Type;
+PyObject *PycairoScaledFont_FromScaledFont (cairo_scaled_font_t *scaled_font);
+
+extern PyTypeObject PycairoSurface_Type;
+extern PyTypeObject PycairoImageSurface_Type;
+
+#if CAIRO_HAS_PDF_SURFACE
+extern PyTypeObject PycairoPDFSurface_Type;
+#endif
+
+#if CAIRO_HAS_PS_SURFACE
+extern PyTypeObject PycairoPSSurface_Type;
+#endif
+
+#if CAIRO_HAS_SVG_SURFACE
+extern PyTypeObject PycairoSVGSurface_Type;
+#endif
+
+#if CAIRO_HAS_WIN32_SURFACE
+extern PyTypeObject PycairoWin32Surface_Type;
+#endif
+
+#if CAIRO_HAS_XLIB_SURFACE
+extern PyTypeObject PycairoXlibSurface_Type;
+#endif
+
+PyObject *PycairoSurface_FromSurface (cairo_surface_t *surface,
+ PyObject *base);
+
+int Pycairo_Check_Status (cairo_status_t status);
+
+/* error checking macros */
+#define RETURN_NULL_IF_CAIRO_ERROR(status) \
+ do { \
+ if (status != CAIRO_STATUS_SUCCESS) { \
+ Pycairo_Check_Status (status); \
+ return NULL; \
+ } \
+ } while (0)
+
+#define RETURN_NULL_IF_CAIRO_CONTEXT_ERROR(ctx) \
+ do { \
+ cairo_status_t status = cairo_status (ctx); \
+ if (status != CAIRO_STATUS_SUCCESS) { \
+ Pycairo_Check_Status (status); \
+ return NULL; \
+ } \
+ } while (0)
+
+#define RETURN_NULL_IF_CAIRO_PATTERN_ERROR(pattern) \
+ do { \
+ cairo_status_t status = cairo_pattern_status (pattern); \
+ if (status != CAIRO_STATUS_SUCCESS) { \
+ Pycairo_Check_Status (status); \
+ return NULL; \
+ } \
+ } while (0)
+
+#define RETURN_NULL_IF_CAIRO_SURFACE_ERROR(surface) \
+ do { \
+ cairo_status_t status = cairo_surface_status (surface); \
+ if (status != CAIRO_STATUS_SUCCESS) { \
+ Pycairo_Check_Status (status); \
+ return NULL; \
+ } \
+ } while (0)
+
+#define RETURN_NULL_IF_CAIRO_SCALED_FONT_ERROR(sc_font) \
+ do { \
+ cairo_status_t status = cairo_scaled_font_status (sc_font); \
+ if (status != CAIRO_STATUS_SUCCESS) { \
+ Pycairo_Check_Status (status); \
+ return NULL; \
+ } \
+ } while (0)
+
+#define RETURN_NULL_IF_CAIRO_FONT_OPTIONS_ERROR(fo) \
+ do { \
+ cairo_status_t status = cairo_font_options_status (fo); \
+ if (status != CAIRO_STATUS_SUCCESS) { \
+ Pycairo_Check_Status (status); \
+ return NULL; \
+ } \
+ } while (0)
+
+
+#endif /* _PYCAIRO_PRIVATE_H_ */