[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27292] trunk/blender/source/blender/ python/intern/bpy_rna.c: python api function for rna objects: object. as_pointer()

Campbell Barton ideasman42 at gmail.com
Sat Mar 6 13:37:29 CET 2010


Revision: 27292
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27292
Author:   campbellbarton
Date:     2010-03-06 13:37:29 +0100 (Sat, 06 Mar 2010)

Log Message:
-----------
python api function for rna objects: object.as_pointer()

This means we can write low level apis in pyton or C where blender data is passed to external C modules without having to have blender support this directly.

Example use case is to get an image pointer then use ctypes to get the image buffer and pass it to a C image processing function.

Modified Paths:
--------------
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2010-03-06 12:02:27 UTC (rev 27291)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2010-03-06 12:37:29 UTC (rev 27292)
@@ -2347,6 +2347,14 @@
 	return def;
 }
 
+static PyObject *pyrna_struct_as_pointer(BPy_StructRNA *self)
+{
+	if(self->ptr.data)
+		return PyCapsule_New(self->ptr.data, RNA_struct_identifier(self->ptr.type), NULL);
+
+	Py_RETURN_NONE;
+}
+
 static PyObject *pyrna_prop_get(BPy_PropertyRNA *self, PyObject *args)
 {
 	PointerRNA newptr;
@@ -2661,6 +2669,8 @@
 
 	{"get", (PyCFunction)pyrna_struct_get, METH_VARARGS, NULL},
 
+	{"as_pointer", (PyCFunction)pyrna_struct_as_pointer, METH_NOARGS, NULL},
+
 	/* maybe this become and ID function */
 	{"keyframe_insert", (PyCFunction)pyrna_struct_keyframe_insert, METH_VARARGS, NULL},
 	{"keyframe_delete", (PyCFunction)pyrna_struct_keyframe_delete, METH_VARARGS, NULL},





More information about the Bf-blender-cvs mailing list