[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44435] trunk/blender/source/blender: bmesh api:
Campbell Barton
ideasman42 at gmail.com
Sat Feb 25 20:43:51 CET 2012
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. @@
More information about the Bf-blender-cvs
mailing list