From d7235265fec9560a9f90272cb1dbd3a3d398234e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 2 May 2007 00:49:41 +0000 Subject: [PATCH] PyAPI, Mesh.c - added renderColorLayer and renderUVLayer to the mesh buttons_editing.c - use icons for mesh viewport layer/render layer --- source/blender/python/api2_2x/Mesh.c | 40 +++++++++++++++++++---- source/blender/python/api2_2x/doc/Mesh.py | 6 ++++ source/blender/src/buttons_editing.c | 6 ++-- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/source/blender/python/api2_2x/Mesh.c b/source/blender/python/api2_2x/Mesh.c index 7cd2b8cc1cb..85feedf86ba 100644 --- a/source/blender/python/api2_2x/Mesh.c +++ b/source/blender/python/api2_2x/Mesh.c @@ -6530,7 +6530,14 @@ static PyObject *Mesh_getColorLayerNames( BPy_Mesh * self ) static PyObject *Mesh_getActiveLayer( BPy_Mesh * self, void *type ) { CustomData *data = &self->mesh->fdata; - int i = CustomData_get_active_layer_index(data, (int)type); + int layer_type = (int)type; + int i; + if (layer_type < 0) { /* hack, if negative, its the renderlayer.*/ + layer_type = -layer_type; + i = CustomData_get_render_layer_index(data, layer_type); + } else { + i = CustomData_get_active_layer_index(data, layer_type); + } if (i == -1) /* so -1 is for no active layer 0+ for an active layer */ Py_RETURN_NONE; else { @@ -6542,17 +6549,22 @@ static int Mesh_setActiveLayer( BPy_Mesh * self, PyObject * value, void *type ) { CustomData *data = &self->mesh->fdata; char *name; - int i,ok,n; + int i,ok,n,layer_type = (int)type, render=0; if( !PyString_Check( value ) ) return EXPP_ReturnIntError( PyExc_ValueError, "expected a string argument" ); - + + if (layer_type<0) { + layer_type = -layer_type; + render = 1; + } + name = PyString_AsString( value ); ok = 0; n = 0; for(i=0; i < data->totlayer; ++i) { - if(data->layers[i].type == (int) type) { + if(data->layers[i].type == layer_type) { if (strcmp(data->layers[i].name, name)==0) { ok = 1; break; @@ -6564,9 +6576,12 @@ static int Mesh_setActiveLayer( BPy_Mesh * self, PyObject * value, void *type ) if (!ok) return EXPP_ReturnIntError( PyExc_ValueError, "layer name does not exist" ); - - CustomData_set_layer_active(data, (int)type, n); - mesh_update_customdata_pointers(self->mesh); + if (render) { + CustomData_set_layer_render(data, layer_type, n); + } else { + CustomData_set_layer_active(data, layer_type, n); + mesh_update_customdata_pointers(self->mesh); + } return 0; } @@ -7696,6 +7711,17 @@ static PyGetSetDef BPy_Mesh_getseters[] = { (getter)Mesh_getActiveLayer, (setter)Mesh_setActiveLayer, "Name of the active vertex color layer", (void *)CD_MTFACE}, + /* hack flip CD_MCOL so it uses the render setting */ + {"renderColorLayer", + (getter)Mesh_getActiveLayer, (setter)Mesh_setActiveLayer, + "Name of the render UV layer", + (void *)-CD_MCOL}, + {"renderUVLayer", + (getter)Mesh_getActiveLayer, (setter)Mesh_setActiveLayer, + "Name of the render vertex color layer", + (void *)-CD_MTFACE}, + + /* Multires */ {"multiresLevelCount", diff --git a/source/blender/python/api2_2x/doc/Mesh.py b/source/blender/python/api2_2x/doc/Mesh.py index 69a8feba7e6..ae4c4370e3f 100644 --- a/source/blender/python/api2_2x/doc/Mesh.py +++ b/source/blender/python/api2_2x/doc/Mesh.py @@ -778,6 +778,12 @@ class Mesh: B{Note}: After setting this value, call L{update} so the result can be seen the the 3d view. @type activeColorLayer: string + + @ivar renderUVLayer: The mesh's rendered UV/Image layer. None if there is no UV/Image layers. + @type renderUVLayer: string + @ivar renderColorLayer: The mesh's rendered Vertex Color layer. None if there is no UV/Image layers. + @type renderColorLayer: string + @ivar multires: The mesh has multires data, set True to add multires data. Will throw an exception if the mesh has shape keys; use L{key} to test. @type multires: bool diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index b68d81b510d..80dd4a034c7 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -799,9 +799,9 @@ static int customdata_buttons( if(layer->type == type) { *activep= layer->active + 1; *renderp= layer->active_rnd + 1; - - uiDefButI(block, ROW, setevt, "A", x,y,25,19, activep, 1.0, count, 0, 0, browsetip); - uiDefButI(block, ROW, setevt_rnd, "R", x+25,y,25,19, renderp, 1.0, count, 0, 0, browsetip_rnd); + + uiDefIconButI(block, ROW, setevt, ICON_VIEW3D, x,y,25,19, activep, 1.0, count, 0, 0, browsetip); + uiDefIconButI(block, ROW, setevt_rnd, ICON_SCENE, x+25,y,25,19, renderp, 1.0, count, 0, 0, browsetip_rnd); but=uiDefBut(block, TEX, setevt, "", x+50,y,145,19, layer->name, 0.0, 31.0, 0, 0, label); uiButSetFunc(but, verify_customdata_name_func, data, layer); but= uiDefIconBut(block, BUT, B_NOP, VICON_X, x+195,y,25,19, NULL, 0.0, 0.0, 0.0, 0.0, deltip);