[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42119] branches/bmesh/blender/source/ blender/makesrna/intern: add some macros to cleanup lots of tedious code in rna_mesh. c defining customdatalayer collections ( especially as upcoming bmesh cycles changes will add a few more such collections )
Andrew Wiggin
ender79bl at gmail.com
Thu Nov 24 07:56:01 CET 2011
Revision: 42119
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42119
Author: ender79
Date: 2011-11-24 06:55:53 +0000 (Thu, 24 Nov 2011)
Log Message:
-----------
add some macros to cleanup lots of tedious code in rna_mesh.c defining customdatalayer collections (especially as upcoming bmesh cycles changes will add a few more such collections)
Modified Paths:
--------------
branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c
Added Paths:
-----------
branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh_utils.h
Modified: branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c 2011-11-24 06:30:37 UTC (rev 42118)
+++ branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c 2011-11-24 06:55:53 UTC (rev 42119)
@@ -67,6 +67,8 @@
#include "WM_api.h"
#include "WM_types.h"
+#include "rna_mesh_utils.h"
+
static Mesh *rna_mesh(PointerRNA *ptr)
{
Mesh *me = (Mesh *)ptr->id.data;
@@ -394,308 +396,40 @@
/* uv_loop_layers */
-static int rna_uv_loop_layer_check(CollectionPropertyIterator *iter, void *data)
-{
- CustomDataLayer *layer = (CustomDataLayer *)data;
- return (layer->type != CD_MLOOPUV);
-}
+DEFINE_CUSTOMDATA_LAYER_COLLECTION(uv_loop_layer, ldata, CD_MLOOPUV)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, active, MeshUVLoopLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, clone, MeshUVLoopLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, stencil, MeshUVLoopLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, render, MeshUVLoopLayer)
-static void rna_Mesh_uv_loop_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
- rna_iterator_array_begin(iter, (void *)ldata->layers, sizeof(CustomDataLayer), ldata->totlayer, 0, rna_uv_loop_layer_check);
-}
+/* MeshUVLoopLayer */
-static int rna_Mesh_uv_loop_layers_length(PointerRNA *ptr)
+static char *rna_MeshUVLoopLayer_path(PointerRNA *ptr)
{
- return CustomData_number_of_layers(rna_mesh_ldata(ptr), CD_MLOOPUV);
+ return BLI_sprintfN("uv_loop_layer[\"%s\"]", ((CustomDataLayer*)ptr->data)->name);
}
-static PointerRNA rna_Mesh_active_uv_loop_layer_get(PointerRNA *ptr)
+static void rna_MeshUVLoopLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
- CustomData *ldata = rna_mesh_ldata(ptr);
- int index = CustomData_get_active_layer_index(ldata, CD_MLOOPUV);
- CustomDataLayer *cdl = (index == -1) ? NULL : &ldata->layers[index];
-
- return rna_pointer_inherit_refine(ptr, &RNA_MeshUVLoopLayer, cdl);
-}
-
-static PointerRNA rna_Mesh_uv_loop_layer_clone_get(PointerRNA *ptr)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
- int index = CustomData_get_clone_layer_index(ldata, CD_MLOOPUV);
- CustomDataLayer *cdl = (index == -1) ? NULL : &ldata->layers[index];
-
- return rna_pointer_inherit_refine(ptr, &RNA_MeshUVLoopLayer, cdl);
-}
-
-static PointerRNA rna_Mesh_uv_loop_layer_stencil_get(PointerRNA *ptr)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
- int index = CustomData_get_stencil_layer_index(ldata, CD_MLOOPUV);
- CustomDataLayer *cdl = (index == -1) ? NULL : &ldata->layers[index];
-
- return rna_pointer_inherit_refine(ptr, &RNA_MeshUVLoopLayer, cdl);
-}
-
-static void rna_Mesh_active_uv_loop_layer_set(PointerRNA *ptr, PointerRNA value)
-{
Mesh *me = rna_mesh(ptr);
- CustomData *ldata = rna_mesh_ldata(ptr);
- CustomDataLayer *cdl;
- int a;
-
- for(cdl=ldata->layers, a=0; a<ldata->totlayer; cdl++, a++) {
- if(value.data == cdl) {
- CustomData_set_layer_active_index(ldata, CD_MLOOPUV, a);
- mesh_update_customdata_pointers(me);
- return;
- }
- }
+ CustomDataLayer *layer = (CustomDataLayer *)ptr->data;
+ rna_iterator_array_begin(iter, layer->data, sizeof(MLoopUV), (me->edit_btmesh) ? 0 : me->totloop, 0, NULL);
}
-static void rna_Mesh_uv_loop_layer_clone_set(PointerRNA *ptr, PointerRNA value)
+static int rna_MeshUVLoopLayer_data_length(PointerRNA *ptr)
{
- CustomData *ldata = rna_mesh_ldata(ptr);
- CustomDataLayer *cdl;
- int a;
-
- for(cdl=ldata->layers, a=0; a<ldata->totlayer; cdl++, a++) {
- if(value.data == cdl) {
- CustomData_set_layer_clone_index(ldata, CD_MLOOPUV, a);
- return;
- }
- }
-
- return;
-}
-
-static void rna_Mesh_uv_loop_layer_stencil_set(PointerRNA *ptr, PointerRNA value)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
- CustomDataLayer *cdl;
- int a;
-
- for(cdl=ldata->layers, a=0; a<ldata->totlayer; cdl++, a++) {
- if(value.data == cdl) {
- CustomData_set_layer_stencil_index(ldata, CD_MLOOPUV, a);
- return;
- }
- }
-
- return;
-}
-
-static int rna_Mesh_active_uv_loop_layer_index_get(PointerRNA *ptr)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
- return CustomData_get_active_layer(ldata, CD_MLOOPUV);
-}
-
-static int rna_Mesh_uv_loop_layer_clone_index_get(PointerRNA *ptr)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
- return CustomData_get_clone_layer(ldata, CD_MLOOPUV);
-}
-
-static int rna_Mesh_uv_loop_layer_stencil_index_get(PointerRNA *ptr)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
- return CustomData_get_stencil_layer(ldata, CD_MLOOPUV);
-}
-
-static void rna_Mesh_active_uv_loop_layer_index_set(PointerRNA *ptr, int value)
-{
Mesh *me = rna_mesh(ptr);
- CustomData *ldata = rna_mesh_ldata(ptr);
-
- CustomData_set_layer_active(ldata, CD_MLOOPUV, value);
- mesh_update_customdata_pointers(me);
+ return (me->edit_btmesh) ? 0 : me->totloop;
}
-static void rna_Mesh_uv_loop_layer_clone_index_set(PointerRNA *ptr, int value)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
-
- CustomData_set_layer_clone(ldata, CD_MLOOPUV, value);
-}
-
-static void rna_Mesh_uv_loop_layer_stencil_index_set(PointerRNA *ptr, int value)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
-
- CustomData_set_layer_stencil(ldata, CD_MLOOPUV, value);
-}
-
-static void rna_Mesh_active_uv_loop_layer_index_range(PointerRNA *ptr, int *min, int *max)
-{
- CustomData *ldata = rna_mesh_ldata(ptr);
-
- *min= 0;
- *max= CustomData_number_of_layers(ldata, CD_MLOOPUV)-1;
- *max= MAX2(0, *max);
-}
-
/* uv_textures */
-static int rna_uv_texture_check(CollectionPropertyIterator *iter, void *data)
-{
- CustomDataLayer *layer= (CustomDataLayer*)data;
- return (layer->type != CD_MTEXPOLY);
-}
+DEFINE_CUSTOMDATA_LAYER_COLLECTION(uv_texture, pdata, CD_MTEXPOLY)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, active, MeshTextureFaceLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, clone, MeshTextureFaceLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, stencil, MeshTextureFaceLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, render, MeshTextureFaceLayer)
-static void rna_Mesh_uv_textures_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
-{
- CustomData *pdata = rna_mesh_pdata(ptr);
- rna_iterator_array_begin(iter, (void*)pdata->layers, sizeof(CustomDataLayer), pdata->totlayer, 0, rna_uv_texture_check);
-}
-
-static int rna_Mesh_uv_textures_length(PointerRNA *ptr)
-{
- return CustomData_number_of_layers(rna_mesh_pdata(ptr), CD_MTEXPOLY);
-}
-
-static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr)
-{
- CustomData *pdata = rna_mesh_pdata(ptr);
- int index= CustomData_get_active_layer_index(pdata, CD_MTEXPOLY);
- CustomDataLayer *cdl= (index == -1)? NULL: &pdata->layers[index];
-
- return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
-}
-
-static PointerRNA rna_Mesh_uv_texture_clone_get(PointerRNA *ptr)
-{
- CustomData *pdata= rna_mesh_pdata(ptr);
- int index= CustomData_get_clone_layer_index(pdata, CD_MTEXPOLY);
- CustomDataLayer *cdl= (index == -1)? NULL: &pdata->layers[index];
-
- return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
-}
-
-static PointerRNA rna_Mesh_uv_texture_stencil_get(PointerRNA *ptr)
-{
- CustomData *pdata= rna_mesh_pdata(ptr);
- int index= CustomData_get_stencil_layer_index(pdata, CD_MTEXPOLY);
- CustomDataLayer *cdl= (index == -1)? NULL: &pdata->layers[index];
-
- return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
-}
-
-static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value)
-{
- Mesh *me = rna_mesh(ptr);
- CustomData *pdata = rna_mesh_pdata(ptr);
- CustomDataLayer *cdl;
- int a;
-
- for(cdl=pdata->layers, a=0; a<pdata->totlayer; cdl++, a++) {
- if(value.data == cdl) {
- CustomData_set_layer_active_index(pdata, CD_MTEXPOLY, a);
- mesh_update_customdata_pointers(me);
- return;
- }
- }
-}
-
-static void rna_Mesh_uv_texture_clone_set(PointerRNA *ptr, PointerRNA value)
-{
- CustomData *pdata= rna_mesh_pdata(ptr);
- CustomDataLayer *cdl;
- int a;
-
- for(cdl=pdata->layers, a=0; a<pdata->totlayer; cdl++, a++) {
- if(value.data == cdl) {
- CustomData_set_layer_clone_index(pdata, CD_MTEXPOLY, a);
- return;
- }
- }
-
- return;
-}
-
-static void rna_Mesh_uv_texture_stencil_set(PointerRNA *ptr, PointerRNA value)
-{
- CustomData *pdata= rna_mesh_pdata(ptr);
- CustomDataLayer *cdl;
- int a;
-
- for(cdl=pdata->layers, a=0; a<pdata->totlayer; cdl++, a++) {
- if(value.data == cdl) {
- CustomData_set_layer_stencil_index(pdata, CD_MTEXPOLY, a);
- return;
- }
- }
-
- return;
-}
-
-static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr)
-{
- CustomData *pdata = rna_mesh_pdata(ptr);
- return CustomData_get_active_layer(pdata, CD_MTEXPOLY);
-}
-
-static int rna_Mesh_uv_texture_clone_index_get(PointerRNA *ptr)
-{
- CustomData *pdata = rna_mesh_pdata(ptr);
- return CustomData_get_clone_layer(pdata, CD_MTEXPOLY);
-}
-
-static int rna_Mesh_uv_texture_stencil_index_get(PointerRNA *ptr)
-{
- CustomData *pdata = rna_mesh_pdata(ptr);
- return CustomData_get_stencil_layer(pdata, CD_MTEXPOLY);
-}
-
-static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value)
-{
- Mesh *me = rna_mesh(ptr);
- CustomData *pdata = rna_mesh_pdata(ptr);
-
- CustomData_set_layer_active(pdata, CD_MTEXPOLY, value);
- mesh_update_customdata_pointers(me);
-}
-
-static void rna_Mesh_uv_texture_clone_index_set(PointerRNA *ptr, int value)
-{
- CustomData *pdata = rna_mesh_pdata(ptr);
-
- CustomData_set_layer_clone(pdata, CD_MTEXPOLY, value);
-}
-
-static void rna_Mesh_uv_texture_stencil_index_set(PointerRNA *ptr, int value)
-{
- CustomData *pdata = rna_mesh_pdata(ptr);
-
- CustomData_set_layer_stencil(pdata, CD_MTEXPOLY, value);
-}
-
-static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max)
-{
- CustomData *pdata= rna_mesh_pdata(ptr);
-
- *min= 0;
- *max= CustomData_number_of_layers(pdata, CD_MTEXPOLY)-1;
- *max= MAX2(0, *max);
-}
-
-static void rna_MeshTextureFace_uv1_get(PointerRNA *ptr, float *values)
-{
- MLoopUV *mloopuv= (MLoopUV*)ptr->data;
-
- values[0]= mloopuv->uv[0];
- values[1]= mloopuv->uv[1];
-}
-
-static void rna_MeshTextureFace_uv1_set(PointerRNA *ptr, const float *values)
-{
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list