| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * $Id$ | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * ***** BEGIN GPL LICENSE BLOCK ***** | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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 | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. | 
					
						
							|  |  |  |  * All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This is a new part of Blender. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Contributor(s): Ken Hughes | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * ***** END GPL LICENSE BLOCK ***** | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Most of this file comes from opy_nmesh.[ch] in the old bpython dir */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef EXPP_MESH_H
 | 
					
						
							|  |  |  | #define EXPP_MESH_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <Python.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef HAVE_CONFIG_H
 | 
					
						
							|  |  |  | #include <config.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "DNA_object_types.h"
 | 
					
						
							|  |  |  | #include "DNA_mesh_types.h"
 | 
					
						
							|  |  |  | #include "DNA_meshdata_types.h"
 | 
					
						
							|  |  |  | #include "Material.h"
 | 
					
						
							|  |  |  | #include "Image.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* EXPP PyType Objects */ | 
					
						
							|  |  |  | extern PyTypeObject Mesh_Type; | 
					
						
							|  |  |  | extern PyTypeObject MVert_Type; | 
					
						
							| 
									
										
										
										
											2005-10-11 04:09:08 +00:00
										 |  |  | extern PyTypeObject PVert_Type; | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | extern PyTypeObject MVertSeq_Type; | 
					
						
							| 
									
										
										
										
											2005-10-19 21:24:18 +00:00
										 |  |  | extern PyTypeObject MEdge_Type; | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | extern PyTypeObject MFace_Type; | 
					
						
							|  |  |  | extern PyTypeObject MCol_Type; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct BPy_Object; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Type checking for EXPP PyTypes */ | 
					
						
							|  |  |  | #define BPy_Mesh_Check(v)       ((v)->ob_type == &Mesh_Type)
 | 
					
						
							|  |  |  | #define BPy_MFace_Check(v)      ((v)->ob_type == &MFace_Type)
 | 
					
						
							| 
									
										
										
										
											2005-10-19 21:24:18 +00:00
										 |  |  | #define BPy_MEdge_Check(v)      ((v)->ob_type == &MEdge_Type)
 | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | #define BPy_MVert_Check(v)      ((v)->ob_type == &MVert_Type)
 | 
					
						
							| 
									
										
										
										
											2005-10-11 04:09:08 +00:00
										 |  |  | #define BPy_PVert_Check(v)      ((v)->ob_type == &PVert_Type)
 | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | #define BPy_MCol_Check(v)       ((v)->ob_type == &MCol_Type)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Typedefs for the new types */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_HEAD		/* required python macro   */ | 
					
						
							|  |  |  | 	MCol *color; | 
					
						
							|  |  |  | } BPy_MCol;			    /* a Mesh color: [r,g,b,a] */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_VAR_HEAD	/* required python macro   */ | 
					
						
							| 
									
										
										
										
											2005-10-11 04:09:08 +00:00
										 |  |  | 	void * data;		/* points to a Mesh or an MVert */ | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | 	int index; | 
					
						
							|  |  |  | } BPy_MVert;			/* a Mesh vertex */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_VAR_HEAD	/* required python macro   */ | 
					
						
							|  |  |  | 	Mesh * mesh; | 
					
						
							|  |  |  | 	int iter; | 
					
						
							|  |  |  | } BPy_MVertSeq;			/* a Mesh vertex sequence */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_VAR_HEAD	/* required python macro   */ | 
					
						
							| 
									
										
										
										
											2005-10-19 21:24:18 +00:00
										 |  |  | 	Mesh *mesh;			/* points to a Mesh */ | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | 	int index; | 
					
						
							| 
									
										
										
										
											2006-10-04 17:06:29 +00:00
										 |  |  | 	short iter;			/* char because it can only ever be between -1 and 2 */ | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | } BPy_MEdge;			/* a Mesh edge */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_VAR_HEAD	/* required python macro   */ | 
					
						
							|  |  |  | 	Mesh * mesh; | 
					
						
							|  |  |  | 	int iter; | 
					
						
							|  |  |  | } BPy_MEdgeSeq;			/* a Mesh edge sequence */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_VAR_HEAD	/* required python macro   */ | 
					
						
							|  |  |  | 	Mesh * mesh; | 
					
						
							|  |  |  | 	int index; | 
					
						
							| 
									
										
										
										
											2006-10-04 17:06:29 +00:00
										 |  |  | 	short iter;			/* char because it can only ever be between -1 and 4 */ | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | } BPy_MFace;			/* a Mesh face */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_VAR_HEAD	/* required python macro   */ | 
					
						
							|  |  |  | 	Mesh * mesh; | 
					
						
							|  |  |  | 	int iter; | 
					
						
							|  |  |  | } BPy_MFaceSeq;			/* a Mesh face sequence */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	PyObject_HEAD		/* required python macro   */ | 
					
						
							| 
									
										
										
										
											2005-10-27 19:37:37 +00:00
										 |  |  | 	Mesh *mesh; | 
					
						
							|  |  |  | 	Object *object; | 
					
						
							| 
									
										
										
										
											2006-05-20 16:52:11 +00:00
										 |  |  | 	char new;			/* was mesh created or already existed? */ | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | } BPy_Mesh; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* PROTOS */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyObject *Mesh_Init( void ); | 
					
						
							| 
									
										
										
										
											2005-10-27 19:37:37 +00:00
										 |  |  | PyObject *Mesh_CreatePyObject( Mesh * me, Object *obj ); | 
					
						
							|  |  |  | Mesh *Mesh_FromPyObject( PyObject * pyobj, Object *obj ); | 
					
						
							| 
									
										
										
										
											2005-10-03 19:36:15 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif				/* EXPP_MESH_H */
 |