Revision: 44435
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44435
Author:   campbellbarton
Date:     2012-02-25 19:43:51 +0000 (Sat, 25 Feb 2012)
Log Message:
-----------
bmesh api:
* added BM_elem_flag_set, BMO_elem_flag_set. to avoid 'if(...) enable(); else 
disable();' all over the place.
* added bmesh_operator_api_inline.c, the header file was getting messy.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/CMakeLists.txt
    trunk/blender/source/blender/bmesh/bmesh.h
    trunk/blender/source/blender/bmesh/bmesh_operator_api.h
    trunk/blender/source/blender/bmesh/intern/bmesh_inline.c
    trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
    trunk/blender/source/blender/bmesh/intern/bmesh_queries.c
    trunk/blender/source/blender/bmesh/operators/bmo_create.c
    trunk/blender/source/blender/bmesh/operators/bmo_dissolve.c
    trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
    trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
    trunk/blender/source/blender/bmesh/operators/bmo_primitive.c
    trunk/blender/source/blender/bmesh/operators/bmo_removedoubles.c
    trunk/blender/source/blender/bmesh/operators/bmo_triangulate.c
    trunk/blender/source/blender/bmesh/operators/bmo_utils.c
    trunk/blender/source/blender/bmesh/tools/BME_bevel.c
    trunk/blender/source/blender/editors/mesh/bmesh_select.c
    trunk/blender/source/blender/editors/mesh/bmesh_tools.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c

Added Paths:
-----------
    trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c

Modified: trunk/blender/source/blender/bmesh/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/bmesh/CMakeLists.txt   2012-02-25 18:13:58 UTC 
(rev 44434)
+++ trunk/blender/source/blender/bmesh/CMakeLists.txt   2012-02-25 19:43:51 UTC 
(rev 44435)
@@ -90,6 +90,7 @@
        intern/bmesh_mods.c
        intern/bmesh_newcore.c
        intern/bmesh_opdefines.c
+       intern/bmesh_operator_api_inline.c
        intern/bmesh_operators.c
        intern/bmesh_operators_private.h
        intern/bmesh_polygon.c

Modified: trunk/blender/source/blender/bmesh/bmesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh.h  2012-02-25 18:13:58 UTC (rev 
44434)
+++ trunk/blender/source/blender/bmesh/bmesh.h  2012-02-25 19:43:51 UTC (rev 
44435)
@@ -372,6 +372,7 @@
 #include "bmesh_iterators.h"
 #include "bmesh_walkers.h"
 #include "intern/bmesh_inline.c"
+#include "intern/bmesh_operator_api_inline.c"
 
 #ifdef __cplusplus
 }

Modified: trunk/blender/source/blender/bmesh/bmesh_operator_api.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_operator_api.h     2012-02-25 
18:13:58 UTC (rev 44434)
+++ trunk/blender/source/blender/bmesh/bmesh_operator_api.h     2012-02-25 
19:43:51 UTC (rev 44435)
@@ -73,6 +73,7 @@
  *   semantically similar to the iterator api in bmesh_iterators.h).
  */
 
+struct BMesh;
 struct GHashIterator;
 
 /* slot type arrays are terminated by the last member
@@ -182,15 +183,10 @@
 #define BMO_elem_flag_test(bm, element, oflag)    
((element)->oflags[bm->stackdepth-1].f &   (oflag))
 #define BMO_elem_flag_enable(bm, element, oflag)  
((element)->oflags[bm->stackdepth-1].f |=  (oflag))
 #define BMO_elem_flag_disable(bm, element, oflag) 
((element)->oflags[bm->stackdepth-1].f &= ~(oflag))
+#define BMO_elem_flag_set(bm, element, oflag, val)((val) ? 
BMO_elem_flag_enable(bm, element, oflag) : \
+                                                           
BMO_elem_flag_disable(bm, element, oflag))
 #define BMO_elem_flag_toggle(bm, element, oflag)  
((element)->oflags[bm->stackdepth-1].f ^=  (oflag))
 
-/* profiling showed a significant amount of time spent in BMO_elem_flag_test */
-#if 0
-void BMO_elem_flag_enable(struct BMesh *bm, void *element, const short oflag);
-void BMO_elem_flag_disable(struct BMesh *bm, void *element, const short oflag);
-int BMO_elem_flag_test(struct BMesh *bm, void *element, const short oflag);
-#endif
-
 /* count the number of elements with a specific flag.
  * type can be a bitmask of BM_FACE, BM_EDGE, or BM_FACE. */
 int BMO_mesh_flag_count(struct BMesh *bm, const short oflag, const char htype);
@@ -339,44 +335,11 @@
  */
 int BMO_vert_edge_flags_count(BMesh *bm, BMVert *v, const short oflag);
 
-/* inserts a key/value mapping into a mapping slot.  note that it copies the
- * value, it doesn't store a reference to it. */
-
-#if 0
-
-BM_INLINE void BMO_slot_map_insert(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                   void *element, void *data, int len);
-
-/* inserts a key/float mapping pair into a mapping slot. */
-BM_INLINE void BMO_slot_map_float_insert(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                         void *element, float val);
-
-/* returns 1 if the specified pointer is in the map. */
-BM_INLINE int BMO_slot_map_contains(BMesh *bm, BMOperator *op, const char 
*slotname, void *element);
-
-/* returns a point to the value of a specific key. */
-BM_INLINE void *BMO_slot_map_data_get(BMesh *bm, BMOperator *op, const char 
*slotname, void *element);
-
-/* returns the float part of a key/float pair. */
-BM_INLINE float BMO_slot_map_float_get(BMesh *bm, BMOperator *op, const char 
*slotname, void *element);
-
-#endif
-
 /* flags all elements in a mapping.  note that the mapping must only have
  * bmesh elements in it.*/
 void BMO_slot_map_to_flag(struct BMesh *bm, struct BMOperator *op,
                           const char *slotname, const short oflag);
 
-/* pointer versoins of BMO_slot_map_float_get and BMO_slot_map_float_insert.
- *
- * do NOT use these for non-operator-api-allocated memory! instead
- * use BMO_slot_map_data_get and BMO_slot_map_insert, which copies the data. */
-
-#if 0
-BM_INLINE void BMO_slot_map_ptr_insert(BMesh *bm, BMOperator *op, const char 
*slotname, void *key, void *val);
-BM_INLINE void *BMO_slot_map_ptr_get(BMesh *bm, BMOperator *op, const char 
*slotname, void *key);
-#endif
-
 /* this part of the API is used to iterate over element buffer or
  * mapping slots.
  *
@@ -453,104 +416,6 @@
 
 extern const int BMO_OPSLOT_TYPEINFO[BMO_OP_SLOT_TOTAL_TYPES];
 
-BM_INLINE void BMO_slot_map_insert(BMesh *UNUSED(bm), BMOperator *op, const 
char *slotname,
-                                   void *element, void *data, int len)
-{
-       BMOElemMapping *mapping;
-       BMOpSlot *slot = BMO_slot_get(op, slotname);
-
-       /*sanity check*/
-       if (slot->slottype != BMO_OP_SLOT_MAPPING) {
-               return;
-       }
-
-       mapping = (BMOElemMapping *) BLI_memarena_alloc(op->arena, 
sizeof(*mapping) + len);
-
-       mapping->element = (BMHeader*) element;
-       mapping->len = len;
-       memcpy(mapping + 1, data, len);
-
-       if (!slot->data.ghash) {
-               slot->data.ghash = BLI_ghash_new(BLI_ghashutil_ptrhash,
-                                                BLI_ghashutil_ptrcmp, "bmesh 
op");
-       }
-
-       BLI_ghash_insert(slot->data.ghash, element, mapping);
-}
-
-BM_INLINE void BMO_slot_map_int_insert(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                       void *element, int val)
-{
-       BMO_slot_map_insert(bm, op, slotname, element, &val, sizeof(int));
-}
-
-BM_INLINE void BMO_slot_map_float_insert(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                         void *element, float val)
-{
-       BMO_slot_map_insert(bm, op, slotname, element, &val, sizeof(float));
-}
-
-BM_INLINE void BMO_slot_map_ptr_insert(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                       void *element, void *val)
-{
-       BMO_slot_map_insert(bm, op, slotname, element, &val, sizeof(void*));
-}
-
-BM_INLINE int BMO_slot_map_contains(BMesh *UNUSED(bm), BMOperator *op, const 
char *slotname, void *element)
-{
-       BMOpSlot *slot = BMO_slot_get(op, slotname);
-
-       /*sanity check*/
-       if (slot->slottype != BMO_OP_SLOT_MAPPING) return 0;
-       if (!slot->data.ghash) return 0;
-
-       return BLI_ghash_haskey(slot->data.ghash, element);
-}
-
-BM_INLINE void *BMO_slot_map_data_get(BMesh *UNUSED(bm), BMOperator *op, const 
char *slotname,
-                                      void *element)
-{
-       BMOElemMapping *mapping;
-       BMOpSlot *slot = BMO_slot_get(op, slotname);
-
-       /*sanity check*/
-       if (slot->slottype != BMO_OP_SLOT_MAPPING) return NULL;
-       if (!slot->data.ghash) return NULL;
-
-       mapping = (BMOElemMapping *)BLI_ghash_lookup(slot->data.ghash, element);
-
-       if (!mapping) return NULL;
-
-       return mapping + 1;
-}
-
-BM_INLINE float BMO_slot_map_float_get(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                       void *element)
-{
-       float *val = (float*) BMO_slot_map_data_get(bm, op, slotname, element);
-       if (val) return *val;
-
-       return 0.0f;
-}
-
-BM_INLINE int BMO_slot_map_int_get(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                   void *element)
-{
-       int *val = (int*) BMO_slot_map_data_get(bm, op, slotname, element);
-       if (val) return *val;
-
-       return 0;
-}
-
-BM_INLINE void *BMO_slot_map_ptr_get(BMesh *bm, BMOperator *op, const char 
*slotname,
-                                     void *element)
-{
-       void **val = (void**) BMO_slot_map_data_get(bm, op, slotname, element);
-       if (val) return *val;
-
-       return NULL;
-}
-
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_inline.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_inline.c    2012-02-25 
18:13:58 UTC (rev 44434)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_inline.c    2012-02-25 
19:43:51 UTC (rev 44435)
@@ -46,6 +46,12 @@
        ((BMHeader *)element)->hflag &= ~hflag;
 }
 
+BM_INLINE void BM_elem_flag_set(void *element, const char hflag, const int val)
+{
+       if (val)  BM_elem_flag_enable(element,  hflag);
+       else      BM_elem_flag_disable(element, hflag);
+}
+
 BM_INLINE void BM_elem_flag_toggle(void *element, const char hflag)
 {
        ((BMHeader *)element)->hflag ^= hflag;

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-02-25 
18:13:58 UTC (rev 44434)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-02-25 
19:43:51 UTC (rev 44435)
@@ -115,12 +115,7 @@
                                ok = FALSE;
                        }
 
-                       if (ok) {
-                               BM_elem_flag_enable(f, BM_ELEM_SELECT);
-                       }
-                       else {
-                               BM_elem_flag_disable(f, BM_ELEM_SELECT);
-                       }
+                       BM_elem_flag_set(f, BM_ELEM_SELECT, ok);
                }
        }
        else if (bm->selectmode & SCE_SELECT_EDGE) {
@@ -139,12 +134,7 @@
                                ok = FALSE;
                        }
 
-                       if (ok) {
-                               BM_elem_flag_enable(f, BM_ELEM_SELECT);
-                       }
-                       else {
-                               BM_elem_flag_disable(f, BM_ELEM_SELECT);
-                       }
+                       BM_elem_flag_set(f, BM_ELEM_SELECT, ok);
                }
        }
 
@@ -802,9 +792,6 @@
 
 /***************** Mesh Hiding stuff *********** */
 
-#define BM_ELEM_HIDE_SET(ele, hide) \
-       (hide) ? BM_elem_flag_enable(ele, BM_ELEM_HIDDEN) : 
BM_elem_flag_disable(ele, BM_ELEM_HIDDEN);
-
 static void vert_flush_hide_set(BMesh *bm, BMVert *v)
 {
        BMIter iter;
@@ -815,7 +802,7 @@
                hide = hide && BM_elem_flag_test(e, BM_ELEM_HIDDEN);
        }
 
-       BM_ELEM_HIDE_SET(v, hide);
+       BM_elem_flag_set(v, BM_ELEM_HIDDEN, hide);
 }
 
 static void edge_flush_hide(BMesh *bm, BMEdge *e)
@@ -828,7 +815,7 @@
                hide = hide && BM_elem_flag_test(f, BM_ELEM_HIDDEN);
        }
 
-       BM_ELEM_HIDE_SET(e, hide);
+       BM_elem_flag_set(e, BM_ELEM_HIDDEN, hide);
 }
 
 void BM_vert_hide_set(BMesh *bm, BMVert *v, int hide)
@@ -838,13 +825,13 @@
        BMEdge *e;
        BMFace *f;
 
-       BM_ELEM_HIDE_SET(v, hide);
+       BM_elem_flag_set(v, BM_ELEM_HIDDEN, hide);
 
        BM_ITER(e, &iter, bm, BM_EDGES_OF_VERT, v) {
-               BM_ELEM_HIDE_SET(e, hide);
+               BM_elem_flag_set(e, BM_ELEM_HIDDEN, hide);
 
                BM_ITER(f, &fiter, bm, BM_FACES_OF_EDGE, e) {
-                       BM_ELEM_HIDE_SET(f, hide);
+                       BM_elem_flag_set(f, BM_ELEM_HIDDEN, hide);
                }
        }
 }
@@ -857,10 +844,10 @@
 
        /* edge hiding: faces around the edge */
        BM_ITER(f, &iter, bm, BM_FACES_OF_EDGE, e) {
-               BM_ELEM_HIDE_SET(f, hide);

@@ 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