Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-08-14 13:13:11 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-08-14 13:13:11 +0400
commit731672fc9bbafe7dfcd0e46921276fa8f0643a5f (patch)
treed45731c4b62c97c82a9342e1019a2f0cc2e5e80c /source/blender/bmesh/intern/bmesh_marking.c
parent723eaa36ceea6c5305fb57473ae5e38d8b34249d (diff)
bmesh utility functions for storing an editselection after another in the list.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_marking.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_marking.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c
index bec301acaa9..0a6c0f4b293 100644
--- a/source/blender/bmesh/intern/bmesh_marking.c
+++ b/source/blender/bmesh/intern/bmesh_marking.c
@@ -816,6 +816,13 @@ void BM_editselection_plane(BMEditSelection *ese, float r_plane[3])
}
}
+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 @@ bool _bm_select_history_remove(BMesh *bm, BMHeader *ele)
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 @@ void _bm_select_history_store(BMesh *bm, BMHeader *ele)
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_clear(BMesh *bm)
void BM_select_history_validate(BMesh *bm)
{
- BMEditSelection *ese, *nextese;
-
- ese = bm->selected.first;
+ BMEditSelection *ese, *ese_next;
- 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;
}
}