47 for (j = 0; j < 2; j++) {
48 for (k = 0; k < 2; k++) {
55 for (j = 0; j < 2; j++) {
56 for (k = 0; k < 2; k++) {
69 for (j = 0; j < 2; j++) {
75 for (j = 0; j < 2; j++) {
103 v[1][0] = eed_last->
v1;
104 v[1][1] = eed_last->
v2;
109 const bool rev = (l_other ==
l->prev);
110 while (!
ELEM(l_other->
v, eed_last->
v1, eed_last->
v2)) {
111 l_other = rev ? l_other->
prev : l_other->
next;
114 if (l_other->
v == eve_last) {
167 immVertexFormat(),
"pos", blender::gpu::VertAttrType::SFLOAT_32_32_32);
231 for (
i = 1;
i <= previewlines;
i++) {
232 const float fac = (
i / (
float(previewlines) + 1));
250 BMVert *
v[2][2] = {{
nullptr}}, *eve_last;
251 float (*edges)[2][3] =
nullptr;
268 for (eed = eed_last =
static_cast<BMEdge *
>(
BMW_begin(&walker, eed_start)); eed;
278 (
sizeof(*edges) * (
BLI_stack_count(edge_stack) + (eed_last != eed_start))) * previewlines,
293 v[1][0] = eed_last->
v1;
294 v[1][1] = eed_last->
v2;
295 eve_last = eed_last->
v1;
301 for (
i = 1;
i <= previewlines;
i++) {
302 const float fac = (
i / (
float(previewlines) + 1));
303 float v_cos[2][2][3];
315 if ((eed_last != eed_start) &&
316#ifdef BMW_EDGERING_NGON
328 for (
i = 1;
i <= previewlines;
i++) {
329 const float fac = (
i / (
float(previewlines) + 1));
330 float v_cos[2][2][3];
332 if (!
v[0][0] || !
v[0][1] || !
v[1][0] || !
v[1][1]) {
364 psel,
bm, eed_start, previewlines, vert_positions);
368 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(GPUBlend blend)
void GPU_depth_test(GPUDepthTest 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)
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)
Initialize 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)
void * MEM_mallocN(size_t len, const char *str)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
VecBase< float, 3 > float3