46 for (j = 0; j < 2; j++) {
47 for (k = 0; k < 2; k++) {
54 for (j = 0; j < 2; j++) {
55 for (k = 0; k < 2; k++) {
68 for (j = 0; j < 2; j++) {
74 for (j = 0; j < 2; j++) {
102 v[1][0] = eed_last->
v1;
103 v[1][1] = eed_last->
v2;
108 const bool rev = (l_other ==
l->
prev);
109 while (!
ELEM(l_other->
v, eed_last->
v1, eed_last->
v2)) {
110 l_other = rev ? l_other->
prev : l_other->
next;
113 if (l_other->
v == eve_last) {
177 for (
int i = 0; i < psel->
edges_len; i++) {
198 for (
int i = 0; i < psel->
verts_len; i++) {
229 for (i = 1; i <= previewlines; i++) {
230 const float fac = (i / (
float(previewlines) + 1));
248 BMVert *
v[2][2] = {{
nullptr}}, *eve_last;
249 float(*edges)[2][3] =
nullptr;
266 for (eed = eed_last =
static_cast<BMEdge *
>(
BMW_begin(&walker, eed_start)); eed;
276 (
sizeof(*edges) * (
BLI_stack_count(edge_stack) + (eed_last != eed_start))) * previewlines,
291 v[1][0] = eed_last->
v1;
292 v[1][1] = eed_last->
v2;
293 eve_last = eed_last->
v1;
299 for (i = 1; i <= previewlines; i++) {
300 const float fac = (i / (
float(previewlines) + 1));
301 float v_cos[2][2][3];
313 if ((eed_last != eed_start) &&
314#ifdef BMW_EDGERING_NGON
326 for (i = 1; i <= previewlines; i++) {
327 const float fac = (i / (
float(previewlines) + 1));
328 float v_cos[2][2][3];
330 if (!
v[0][0] || !
v[0][1] || !
v[1][0] || !
v[1][1]) {
362 psel,
bm, eed_start, previewlines, vert_positions);
366 psel,
bm, eed_start, previewlines, vert_positions);
MINLINE float max_ff(float a, float b)
MINLINE void copy_v3_v3(float r[3], const float a[3])
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
void BLI_stack_pop(BLI_Stack *stack, void *dst) ATTR_NONNULL()
size_t BLI_stack_count(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_stack_push(BLI_Stack *stack, const void *src) ATTR_NONNULL()
bool BLI_stack_is_empty(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_stack_free(BLI_Stack *stack) ATTR_NONNULL()
void * BLI_stack_peek(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define BLI_stack_new(esize, descr)
#define GPU_matrix_mul(x)
@ GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR
@ GPU_SHADER_3D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_AA
void GPU_program_point_size(bool enable)
void GPU_blend(eGPUBlend blend)
void GPU_depth_test(eGPUDepthTest test)
void GPU_viewport_size_get_f(float coords[4])
Read Guarded memory(de)allocation.
float UI_GetThemeValuef(int colorid)
#define BM_elem_index_get(ele)
#define BM_ITER_ELEM(ele, iter, data, itype)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_mesh_elem_index_ensure(BMesh *bm, const char htype)
BMLoop * BM_loop_other_edge_loop(BMLoop *l, BMVert *v)
bool BM_edge_share_quad_check(BMEdge *e1, BMEdge *e2)
bool BM_edge_in_face(const BMEdge *e, const BMFace *f)
bool BM_edge_is_any_face_len_test(const BMEdge *e, const int len)
bool BM_edge_share_face_check(BMEdge *e1, BMEdge *e2)
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert * v
void * BMW_begin(BMWalker *walker, void *start)
void BMW_init(BMWalker *walker, BMesh *bm, int type, short mask_vert, short mask_edge, short mask_face, BMWFlag flag, int layer)
Init Walker.
void BMW_end(BMWalker *walker)
End Walker.
void * BMW_step(BMWalker *walker)
Step Walker.
constexpr bool is_empty() const
void EDBM_preselect_edgering_destroy(EditMesh_PreSelEdgeRing *psel)
static void view3d_preselect_mesh_edgering_update_verts_from_edge(EditMesh_PreSelEdgeRing *psel, BMesh *, BMEdge *eed_start, int previewlines, const Span< float3 > vert_positions)
void EDBM_preselect_edgering_clear(EditMesh_PreSelEdgeRing *psel)
void EDBM_preselect_edgering_draw(EditMesh_PreSelEdgeRing *psel, const float matrix[4][4])
static void edgering_vcos_get_pair(BMVert *v[2], float r_cos[2][3], const Span< float3 > vert_positions)
EditMesh_PreSelEdgeRing * EDBM_preselect_edgering_create()
void EDBM_preselect_edgering_update_from_edge(EditMesh_PreSelEdgeRing *psel, BMesh *bm, BMEdge *eed_start, int previewlines, const Span< float3 > vert_positions)
static void view3d_preselect_mesh_edgering_update_edges_from_edge(EditMesh_PreSelEdgeRing *psel, BMesh *bm, BMEdge *eed_start, int previewlines, const Span< float3 > vert_positions)
static void edgering_find_order(BMEdge *eed_last, BMEdge *eed, BMVert *eve_last, BMVert *v[2][2])
static void edgering_vcos_get(BMVert *v[2][2], float r_cos[2][2][3], const Span< float3 > vert_positions)
draw_view in_light_buf[] float
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)