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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2006-12-24 14:15:54 +0300
committerCampbell Barton <ideasman42@gmail.com>2006-12-24 14:15:54 +0300
commitc5de881413504e64011e10b1cf2cbe094950602c (patch)
treefc1bda1bf150a8c0d6ba10fe2f2e31d056dabaeb /source
parent1be58e7a8dccb17dcdf3d95804de0139ba392881 (diff)
added CustomData_add_layer_named, same as CustomData_add_layer but accepts a name. saves Mesh.c having to look up the data after adding (just to rename it)
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_customdata.h3
-rw-r--r--source/blender/blenkernel/intern/customdata.c17
-rw-r--r--source/blender/python/api2_2x/Mesh.c26
3 files changed, 29 insertions, 17 deletions
diff --git a/source/blender/blenkernel/BKE_customdata.h b/source/blender/blenkernel/BKE_customdata.h
index 73b1e02eb51..03224eaadaf 100644
--- a/source/blender/blenkernel/BKE_customdata.h
+++ b/source/blender/blenkernel/BKE_customdata.h
@@ -83,6 +83,9 @@ void CustomData_free_temporary(struct CustomData *data, int totelem);
*/
void *CustomData_add_layer(struct CustomData *data, int type, int alloctype,
void *layer, int totelem);
+/*same as above but accepts a name */
+void *CustomData_add_layer_named(struct CustomData *data, int type, int alloctype,
+ void *layer, int totelem, char *name);
/* frees the active or first data layer with the give type.
* returns 1 on succes, 0 if no layer with the given type is found
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 6b763490be9..e93a58bc951 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -639,6 +639,23 @@ void *CustomData_add_layer(CustomData *data, int type, int alloctype,
return NULL;
}
+/*same as above but accepts a name*/
+void *CustomData_add_layer_named(CustomData *data, int type, int alloctype,
+ void *layerdata, int totelem, char *name)
+{
+ CustomDataLayer *layer;
+ const LayerTypeInfo *typeInfo= layerType_getInfo(type);
+
+ layer = customData_add_layer__internal(data, type, alloctype, layerdata,
+ totelem, name);
+
+ if(layer)
+ return layer->data;
+
+ return NULL;
+}
+
+
int CustomData_free_layer(CustomData *data, int type, int totelem, int index)
{
int i;
diff --git a/source/blender/python/api2_2x/Mesh.c b/source/blender/python/api2_2x/Mesh.c
index 096bea38488..5be47e2985d 100644
--- a/source/blender/python/api2_2x/Mesh.c
+++ b/source/blender/python/api2_2x/Mesh.c
@@ -6356,30 +6356,22 @@ static PyObject *Mesh_insertKey( BPy_Mesh * self, PyObject * args )
static PyObject * Mesh_addCustomLayer_internal(Mesh *me, PyObject * args, int type)
{
- int i;
char *name = NULL;
- void *layer_data;
CustomData *data = &me->fdata;
if( !PyArg_ParseTuple( args, "|s", &name ) )
return EXPP_ReturnPyObjError( PyExc_TypeError,
"expected a string or nothing" );
- layer_data = CustomData_add_layer(data, type, CD_DEFAULT,
- NULL, me->totface);
+ if (strlen(name)>31)
+ return EXPP_ReturnPyObjError( PyExc_ValueError,
+ "error, maximum name length is 31" );
- if (name && layer_data) {
-
- if (strlen(name)>31)
- return EXPP_ReturnPyObjError( PyExc_ValueError,
- "error, maximum name length is 31" );
-
- for(i = 0; i < data->totlayer; i++) {
- if (data->layers[i].data == layer_data ) {
- BLI_strncpy(data->layers[i].name, name, 31);
- CustomData_set_layer_unique_name(&me->fdata, i);
- }
- }
- }
+ if (name)
+ CustomData_add_layer_named(data, type, CD_DEFAULT,
+ NULL, me->totface, name);
+ else
+ CustomData_add_layer(data, type, CD_DEFAULT,
+ NULL, me->totface);
mesh_update_customdata_pointers(me);
Py_RETURN_NONE;
}