Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/python/api2_2x/NMesh.h')
-rw-r--r--source/blender/python/api2_2x/NMesh.h204
1 files changed, 204 insertions, 0 deletions
diff --git a/source/blender/python/api2_2x/NMesh.h b/source/blender/python/api2_2x/NMesh.h
new file mode 100644
index 00000000000..2e82908165f
--- /dev/null
+++ b/source/blender/python/api2_2x/NMesh.h
@@ -0,0 +1,204 @@
+/**
+ *
+ *
+ * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ *
+ * 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. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * 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): Willian P. Germano.
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+
+/* Most of this file comes from opy_nmesh.[ch] in the old bpython dir */
+
+#include "Python.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "MEM_guardedalloc.h"
+#include "BIF_editmesh.h" /* vertexnormals_mesh() */
+#include "BDR_editface.h" /* make_tfaces */
+#include "BKE_mesh.h"
+#include "BKE_main.h"
+#include "BKE_global.h"
+#include "BKE_library.h"
+#include "BKE_displist.h"
+#include "BKE_screen.h"
+#include "BKE_object.h"
+#include "BLI_blenlib.h"
+#include "BIF_space.h"
+#include "DNA_mesh_types.h"
+#include "DNA_object_types.h"
+#include "DNA_material_types.h"
+#include "mydevice.h"
+
+#include "gen_utils.h"
+#include "vector.h"
+#include "constant.h"
+
+/* EXPP PyType Objects */
+
+PyTypeObject NMesh_Type;
+PyTypeObject NMFace_Type;
+PyTypeObject NMVert_Type;
+PyTypeObject NMCol_Type;
+
+/* Globals */
+
+static PyObject *g_nmeshmodule = NULL;
+
+/* Type checking for EXPP PyTypes */
+
+#define C_NMesh_Check(v) ((v)->ob_type == &NMesh_Type)
+#define C_NMFace_Check(v) ((v)->ob_type == &NMFace_Type)
+#define C_NMVert_Check(v) ((v)->ob_type == &NMVert_Type)
+#define C_NMCol_Check(v) ((v)->ob_type == &NMCol_Type)
+
+static char M_NMesh_Col_doc[]=
+"([r, g, b, a]) - Get a new mesh color\n\n\
+[r=255, g=255, b=255, a=255] Specify the color components";
+
+static char M_NMesh_Face_doc[] =
+"(vertexlist = None) - Get a new face, and pass optional vertex list";
+
+static char NMFace_append_doc[] =
+"(vert) - appends Vertex 'vert' to face vertex list";
+
+static char M_NMesh_Vert_doc[] =
+"([x, y, z]) - Get a new vertice\n\n\
+[x, y, z] Specify new coordinates";
+
+static char NMesh_getSelectedFaces_doc[] =
+"(flag = None) - returns list of selected Faces\n\
+If flag = 1, return indices instead";
+
+static char NMesh_getActiveFace_doc[] =
+"returns the index of the active face ";
+
+static char NMesh_hasVertexUV_doc[] =
+"(flag = None) - returns 1 if Mesh has per vertex UVs ('Sticky')\n\
+The optional argument sets the Sticky flag";
+
+static char NMesh_hasFaceUV_doc[] =
+"(flag = None) - returns 1 if Mesh has textured faces\n\
+The optional argument sets the textured faces flag";
+
+static char NMesh_hasVertexColours_doc[] =
+"(flag = None) - returns 1 if Mesh has vertex colours.\n\
+The optional argument sets the vertex colour flag";
+
+static char NMesh_update_doc[] = "updates the Mesh";
+/*
+static char NMesh_asMesh_doc[] = "returns free Mesh datablock object from NMesh";
+
+static char NMesh_link_doc[] = "(object) - Links NMesh data with Object 'object'";
+*/
+static char M_NMesh_New_doc[] =
+"() - returns a new, empty NMesh mesh object\n";
+
+static char M_NMesh_GetRaw_doc[] =
+"([name]) - Get a raw mesh from Blender\n\n\
+[name] Name of the mesh to be returned\n\n\
+If name is not specified a new empty mesh is\n\
+returned, otherwise Blender returns an existing\n\
+mesh.";
+
+static char M_NMesh_GetRawFromObject_doc[] =
+"(name) - Get the raw mesh used by a Blender object\n\n\
+(name) Name of the object to get the mesh from\n\n\
+This returns the mesh as used by the object, which\n\
+means it contains all deformations and modifications.";
+
+static char M_NMesh_PutRaw_doc[] =
+"(mesh, [name, renormal]) - Return a raw mesh to Blender\n\n\
+(mesh) The NMesh object to store\n\
+[name] The mesh to replace\n\
+[renormal=1] Flag to control vertex normal recalculation\n\n\
+If the name of a mesh to replace is not given a new\n\
+object is created and returned.";
+
+/* the color, vertex, face and mesh types below have their own variables
+ * because they don't need to be linked to real Blender data -- e.g.: they
+ * can be created with .New() methods */
+
+/* Typedefs for the new types */
+
+typedef struct {
+ PyObject_HEAD
+ unsigned char r, g, b, a;
+
+} C_NMCol; /* an NMesh color: [r,g,b,a] */
+
+typedef struct {
+ PyObject_VAR_HEAD
+ float co[3];
+ float no[3];
+ float uvco[3];
+ int index;
+
+} C_NMVert; /* an NMesh vertex */
+
+typedef struct {
+ PyObject_HEAD
+ PyObject *v;
+ PyObject *uv;
+ PyObject *col;
+ short mode;
+ short flag;
+ unsigned char transp;
+ PyObject *image; /* Image; was DataBlock *tpage */
+ char mat_nr, smooth;
+
+} C_NMFace; /* an NMesh face */
+
+typedef struct {
+ PyObject_HEAD
+ Mesh *mesh;
+ PyObject *name;
+ PyObject *materials;
+ PyObject *verts;
+ PyObject *faces;
+ int sel_face; /*@ XXX remove */
+ char flags;
+
+#define NMESH_HASMCOL 1<<0
+#define NMESH_HASVERTUV 1<<1
+#define NMESH_HASFACEUV 1<<2
+
+} C_NMesh;
+
+/* PROTOS */
+extern void test_object_materials(ID *id); /* declared in BKE_material.h */
+static int unlink_existingMeshData(Mesh *mesh);
+static int convert_NMeshToMesh(Mesh *mesh, C_NMesh *nmesh);
+void mesh_update(Mesh *mesh);
+PyObject *new_NMesh(Mesh *oldmesh);
+Mesh *Mesh_fromNMesh(C_NMesh *nmesh);
+// XXX change NMesh *ob below to Object, void to Material
+PyObject *NMesh_assignMaterials_toObject(C_NMesh *nmesh, Object *ob);
+Material **nmesh_updateMaterials(C_NMesh *nmesh);
+Material **newMaterialList_fromPyList (PyObject *list);
+void mesh_update(Mesh *mesh);