Blender V4.5
bmesh_marking.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
7#include "bmesh_class.hh"
8
12
18
28
29/* Geometry hiding code. */
30
31#define BM_elem_hide_set(bm, ele, hide) _bm_elem_hide_set(bm, &(ele)->head, hide)
32void _bm_elem_hide_set(BMesh *bm, BMHeader *head, bool hide);
33void BM_vert_hide_set(BMVert *v, bool hide);
34void BM_edge_hide_set(BMEdge *e, bool hide);
35void BM_face_hide_set(BMFace *f, bool hide);
36
37/* Selection code. */
38
44
46 BMesh *bm, char htype, char hflag, bool respecthide, bool overwrite, char hflag_test);
48 BMesh *bm, char htype, char hflag, bool respecthide, bool overwrite, char hflag_test);
49
50void BM_mesh_elem_hflag_enable_all(BMesh *bm, char htype, char hflag, bool respecthide);
51void BM_mesh_elem_hflag_disable_all(BMesh *bm, char htype, char hflag, bool respecthide);
52
53/* Individual element select functions, #BM_elem_select_set is a shortcut for these
54 * that automatically detects which one to use. */
55
75void BM_face_select_set(BMesh *bm, BMFace *f, bool select);
76
77/* Lower level functions which don't do flushing. */
78
81
90void BM_mesh_select_mode_clean_ex(BMesh *bm, short selectmode);
92
99void BM_mesh_select_mode_set(BMesh *bm, int selectmode);
107void BM_mesh_select_mode_flush_ex(BMesh *bm, short selectmode, eBMSelectionFlushFLags flags);
109
118
119int BM_mesh_elem_hflag_count_enabled(BMesh *bm, char htype, char hflag, bool respecthide);
120int BM_mesh_elem_hflag_count_disabled(BMesh *bm, char htype, char hflag, bool respecthide);
121
122/* Edit selection stuff. */
123
125int BM_mesh_active_face_index_get(BMesh *bm, bool is_sloppy, bool is_selected);
128
129BMFace *BM_mesh_active_face_get(BMesh *bm, bool is_sloppy, bool is_selected);
133
143void BM_editselection_center(BMEditSelection *ese, float r_center[3]);
144void BM_editselection_normal(BMEditSelection *ese, float r_normal[3]);
150void BM_editselection_plane(BMEditSelection *ese, float r_plane[3]);
151
152#define BM_select_history_check(bm, ele) _bm_select_history_check(bm, &(ele)->head)
153#define BM_select_history_remove(bm, ele) _bm_select_history_remove(bm, &(ele)->head)
154#define BM_select_history_store_notest(bm, ele) _bm_select_history_store_notest(bm, &(ele)->head)
155#define BM_select_history_store(bm, ele) _bm_select_history_store(bm, &(ele)->head)
156#define BM_select_history_store_head_notest(bm, ele) \
157 _bm_select_history_store_head_notest(bm, &(ele)->head)
158#define BM_select_history_store_head(bm, ele) _bm_select_history_store_head(bm, &(ele)->head)
159#define BM_select_history_store_after_notest(bm, ese_ref, ele) \
160 _bm_select_history_store_after_notest(bm, ese_ref, &(ele)->head)
161#define BM_select_history_store_after(bm, ese, ese_ref) \
162 _bm_select_history_store_after(bm, ese_ref, &(ele)->head)
163
172
183
188 BMesh *bm, GHash *vert_map, GHash *edge_map, GHash *face_map, bool use_chain);
189
190#define BM_SELECT_HISTORY_BACKUP(bm) \
191 { \
192 ListBase _bm_prev_selected = (bm)->selected; \
193 BLI_listbase_clear(&(bm)->selected)
194
195#define BM_SELECT_HISTORY_RESTORE(bm) \
196 (bm)->selected = _bm_prev_selected; \
197 } \
198 (void)0
BMesh * bm
void BM_mesh_select_mode_flush_ex(BMesh *bm, short selectmode, eBMSelectionFlushFLags flags)
Select Mode Flush.
BMVert * BM_mesh_active_vert_get(BMesh *bm)
void BM_select_history_merge_from_targetmap(BMesh *bm, GHash *vert_map, GHash *edge_map, GHash *face_map, bool use_chain)
void BM_select_history_clear(BMesh *bm)
bool _bm_select_history_check(BMesh *bm, const BMHeader *ele)
void _bm_select_history_store_head_notest(BMesh *bm, BMHeader *ele)
int BM_mesh_active_face_index_get(BMesh *bm, bool is_sloppy, bool is_selected)
int BM_mesh_active_edge_index_get(BMesh *bm)
void BM_mesh_select_mode_flush(BMesh *bm)
void BM_mesh_select_mode_clean_ex(BMesh *bm, short selectmode)
Select Mode Clean.
void BM_edge_select_set(BMesh *bm, BMEdge *e, bool select)
Select Edge.
void BM_mesh_select_mode_set(BMesh *bm, int selectmode)
BMEdge * BM_mesh_active_edge_get(BMesh *bm)
void BM_mesh_elem_hflag_enable_test(BMesh *bm, char htype, char hflag, bool respecthide, bool overwrite, char hflag_test)
void BM_mesh_elem_hflag_disable_all(BMesh *bm, char htype, char hflag, bool respecthide)
void BM_mesh_select_flush(BMesh *bm)
bool _bm_select_history_remove(BMesh *bm, BMHeader *ele)
int BM_mesh_elem_hflag_count_enabled(BMesh *bm, char htype, char hflag, bool respecthide)
void _bm_select_history_store_head(BMesh *bm, BMHeader *ele)
void _bm_select_history_store_after(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele)
void BM_vert_select_set(BMesh *bm, BMVert *v, bool select)
Select Vert.
void _bm_select_history_store_notest(BMesh *bm, BMHeader *ele)
int BM_mesh_active_vert_index_get(BMesh *bm)
bool BM_select_history_active_get(BMesh *bm, struct BMEditSelection *ese)
void BM_edge_select_set_noflush(BMesh *bm, BMEdge *e, bool select)
void _bm_elem_hide_set(BMesh *bm, BMHeader *head, bool hide)
void BM_vert_hide_set(BMVert *v, bool hide)
BMElem * BM_mesh_active_elem_get(BMesh *bm)
void BM_mesh_select_mode_clean(BMesh *bm)
void BM_editselection_center(BMEditSelection *ese, float r_center[3])
void _bm_select_history_store_after_notest(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele)
void BM_select_history_validate(BMesh *bm)
void BM_elem_select_set(BMesh *bm, BMElem *ele, bool select)
BMFace * BM_mesh_active_face_get(BMesh *bm, bool is_sloppy, bool is_selected)
void BM_editselection_plane(BMEditSelection *ese, float r_plane[3])
void BM_face_select_set_noflush(BMesh *bm, BMFace *f, bool select)
void BM_editselection_normal(BMEditSelection *ese, float r_normal[3])
void BM_face_select_set(BMesh *bm, BMFace *f, bool select)
Select Face.
void BM_mesh_deselect_flush(BMesh *bm)
void BM_mesh_elem_hflag_enable_all(BMesh *bm, char htype, char hflag, bool respecthide)
int BM_mesh_elem_hflag_count_disabled(BMesh *bm, char htype, char hflag, bool respecthide)
struct GHash * BM_select_history_map_create(BMesh *bm)
void BM_mesh_active_face_set(BMesh *bm, BMFace *f)
void _bm_select_history_store(BMesh *bm, BMHeader *ele)
void BM_edge_hide_set(BMEdge *e, bool hide)
void BM_mesh_elem_hflag_disable_test(BMesh *bm, char htype, char hflag, bool respecthide, bool overwrite, char hflag_test)
eBMSelectionFlushFLags
@ BM_SELECT_LEN_FLUSH_RECALC_ALL
@ BM_SELECT_LEN_FLUSH_RECALC_EDGE
@ BM_SELECT_LEN_FLUSH_RECALC_FACE
@ BM_SELECT_LEN_FLUSH_RECALC_NOTHING
@ BM_SELECT_LEN_FLUSH_RECALC_VERT
void BM_face_hide_set(BMFace *f, bool hide)
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define select(A, B, C)
struct BMEditSelection * next
struct BMEditSelection * prev