/* -*- Mode: C; c-basic-offset: 4 -*- Gimp-Python - allows the writing of Gimp plugins in Python. Copyright (C) 2005 Manish Singh This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _PYGIMP_API_H_ #define _PYGIMP_API_H_ #include #include typedef struct { PyObject_HEAD gint32 ID; } PyGimpImage; typedef struct { PyObject_HEAD gint32 ID; } PyGimpDisplay; typedef struct { PyObject_HEAD gint32 ID; GimpDrawable *drawable; } PyGimpDrawable, PyGimpLayer, PyGimpChannel; typedef struct { PyObject_HEAD gint32 ID; } PyGimpVectors; struct _PyGimp_Functions { PyTypeObject *Image_Type; PyObject *(* image_new)(gint32 ID); PyTypeObject *Display_Type; PyObject *(* display_new)(gint32 ID); PyTypeObject *Drawable_Type; PyObject *(* drawable_new)(GimpDrawable *drawable, gint32 ID); PyTypeObject *Layer_Type; PyObject *(* layer_new)(gint32 ID); PyTypeObject *Channel_Type; PyObject *(* channel_new)(gint32 ID); PyTypeObject *Vectors_Type; PyObject *(* vectors_new)(gint32 ID); PyObject *pygimp_error; }; #ifndef _INSIDE_PYGIMP_ #if defined(NO_IMPORT) || defined(NO_IMPORT_PYGIMP) extern struct _PyGimp_Functions *_PyGimp_API; #else struct _PyGimp_Functions *_PyGimp_API; #endif #define PyGimpImage_Type (_PyGimp_API->Image_Type) #define pygimp_image_new (_PyGimp_API->image_new) #define PyGimpDisplay_Type (_PyGimp_API->Display_Type) #define pygimp_display_new (_PyGimp_API->display_new) #define PyGimpDrawable_Type (_PyGimp_API->Drawable_Type) #define pygimp_drawable_new (_PyGimp_API->drawable_new) #define PyGimpLayer_Type (_PyGimp_API->Layer_Type) #define pygimp_layer_new (_PyGimp_API->layer_new) #define PyGimpChannel_Type (_PyGimp_API->Channel_Type) #define pygimp_channel_new (_PyGimp_API->channel_new) #define PyGimpVectors_Type (_PyGimp_API->Vectors_Type) #define pygimp_vectors_new (_PyGimp_API->vectors_new) #define pygimp_error (_PyGimp_API->pygimp_error) #define init_pygimp() G_STMT_START { \ PyObject *gimpmodule = PyImport_ImportModule("gimp"); \ if (gimpmodule != NULL) { \ PyObject *mdict = PyModule_GetDict(gimpmodule); \ PyObject *cobject = PyDict_GetItemString(mdict, "_PyGimp_API"); \ if (PyCObject_Check(cobject)) \ _PyGimp_API = PyCObject_AsVoidPtr(cobject); \ else { \ PyErr_SetString(PyExc_RuntimeError, \ "could not find _PyGimp_API object"); \ return; \ } \ } else { \ PyErr_SetString(PyExc_ImportError, \ "could not import gimp"); \ return; \ } \ } G_STMT_END #endif /* ! _INSIDE_PYGIMP_ */ #endif /* _PYGIMP_API_H_ */