[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59132] trunk/blender/source/blender/bmesh /intern: bmesh utility functions for storing an editselection after another in the list .
Campbell Barton
ideasman42 at gmail.com
Wed Aug 14 11:13:11 CEST 2013
Revision: 59132
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59132
Author: campbellbarton
Date: 2013-08-14 09:13:11 +0000 (Wed, 14 Aug 2013)
Log Message:
-----------
bmesh utility functions for storing an editselection after another in the list.
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
trunk/blender/source/blender/bmesh/intern/bmesh_marking.h
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.c 2013-08-14 08:14:50 UTC (rev 59131)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.c 2013-08-14 09:13:11 UTC (rev 59132)
@@ -816,6 +816,13 @@
}
}
+static BMEditSelection *bm_select_history_create(BMHeader *ele)
+{
+ BMEditSelection *ese = (BMEditSelection *) MEM_callocN(sizeof(BMEditSelection), "BMEdit Selection");
+ ese->htype = ele->htype;
+ ese->ele = (BMElem *)ele;
+ return ese;
+}
/* --- macro wrapped funcs --- */
bool _bm_select_history_check(BMesh *bm, const BMHeader *ele)
@@ -837,9 +844,7 @@
void _bm_select_history_store_notest(BMesh *bm, BMHeader *ele)
{
- BMEditSelection *ese = (BMEditSelection *) MEM_callocN(sizeof(BMEditSelection), "BMEdit Selection");
- ese->htype = ele->htype;
- ese->ele = (BMElem *)ele;
+ BMEditSelection *ese = bm_select_history_create(ele);
BLI_addtail(&(bm->selected), ese);
}
@@ -849,6 +854,20 @@
BM_select_history_store_notest(bm, (BMElem *)ele);
}
}
+
+
+void _bm_select_history_store_after_notest(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele)
+{
+ BMEditSelection *ese = bm_select_history_create(ele);
+ BLI_insertlinkafter(&(bm->selected), ese_ref, ese);
+}
+
+void _bm_select_history_store_after(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele)
+{
+ if (!BM_select_history_check(bm, (BMElem *)ele)) {
+ BM_select_history_store_after_notest(bm, ese_ref, (BMElem *)ele);
+ }
+}
/* --- end macro wrapped funcs --- */
@@ -861,16 +880,13 @@
void BM_select_history_validate(BMesh *bm)
{
- BMEditSelection *ese, *nextese;
+ BMEditSelection *ese, *ese_next;
- ese = bm->selected.first;
-
- while (ese) {
- nextese = ese->next;
+ for (ese = bm->selected.first; ese; ese = ese_next) {
+ ese_next = ese->next;
if (!BM_elem_flag_test(ese->ele, BM_ELEM_SELECT)) {
BLI_freelinkN(&(bm->selected), ese);
}
- ese = nextese;
}
}
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.h 2013-08-14 08:14:50 UTC (rev 59131)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.h 2013-08-14 09:13:11 UTC (rev 59132)
@@ -87,11 +87,15 @@
#define BM_select_history_remove(bm, ele) _bm_select_history_remove(bm, &(ele)->head)
#define BM_select_history_store_notest(bm, ele) _bm_select_history_store_notest(bm, &(ele)->head)
#define BM_select_history_store(bm, ele) _bm_select_history_store(bm, &(ele)->head)
+#define BM_select_history_store_after_notest(bm, ese_ref, ele) _bm_select_history_store_after_notest(bm, ese_ref, &(ele)->head)
+#define BM_select_history_store_after(bm, ese, ese_ref) _bm_select_history_store_after(bm, ese_ref, &(ele)->head)
bool _bm_select_history_check(BMesh *bm, const BMHeader *ele);
bool _bm_select_history_remove(BMesh *bm, BMHeader *ele);
void _bm_select_history_store_notest(BMesh *bm, BMHeader *ele);
void _bm_select_history_store(BMesh *bm, BMHeader *ele);
+void _bm_select_history_store_after(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele);
+void _bm_select_history_store_after_notest(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele);
void BM_select_history_validate(BMesh *bm);
void BM_select_history_clear(BMesh *em);
More information about the Bf-blender-cvs
mailing list