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. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to