40 for (j = 0; j < 2; j++) {
41 for (k = 0; k < 2; k++) {
48 for (j = 0; j < 2; j++) {
49 for (k = 0; k < 2; k++) {
60 for (j = 0; j < 2; j++) {
66 for (j = 0; j < 2; j++) {
94 v[1][0] = eed_last->
v1;
95 v[1][1] = eed_last->
v2;
100 const bool rev = (l_other ==
l->
prev);
101 while (!
ELEM(l_other->
v, eed_last->
v1, eed_last->
v2)) {
102 l_other = rev ? l_other->
prev : l_other->
next;
105 if (l_other->
v == eve_last) {
168 for (
int i = 0; i < psel->
edges_len; i++) {
189 for (
int i = 0; i < psel->
verts_len; i++) {
210 const float (*coords)[3])
220 for (i = 1; i <= previewlines; i++) {
221 const float fac = (i / ((
float)previewlines + 1));
235 const float (*coords)[3])
257 for (eed = eed_last =
BMW_begin(&walker, eed_start); eed; eed =
BMW_step(&walker)) {
280 v[1][0] = eed_last->
v1;
281 v[1][1] = eed_last->
v2;
282 eve_last = eed_last->
v1;
288 for (i = 1; i <= previewlines; i++) {
289 const float fac = (i / ((
float)previewlines + 1));
290 float v_cos[2][2][3];
302 if ((eed_last != eed_start) &&
303 #ifdef BMW_EDGERING_NGON
314 for (i = 1; i <= previewlines; i++) {
315 const float fac = (i / ((
float)previewlines + 1));
316 float v_cos[2][2][3];
318 if (!
v[0][0] || !
v[0][1] || !
v[1][0] || !
v[1][1]) {
340 const float (*coords)[3])
350 psel,
bm, eed_start, previewlines, coords);
354 psel,
bm, eed_start, previewlines, coords);
typedef float(TangentPoint)[2]
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()
void * BLI_stack_peek(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT 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()
#define BLI_stack_new(esize, descr)
void GPU_matrix_pop(void)
#define GPU_matrix_mul(x)
void GPU_matrix_push(void)
@ 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)
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)
BMLoop * BM_loop_other_edge_loop(BMLoop *l, BMVert *v)
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert * v
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_begin(BMWalker *walker, void *start)
void * BMW_step(BMWalker *walker)
Step Walker.
static void edgering_vcos_get_pair(BMVert *v[2], float r_cos[2][3], const float(*coords)[3])
void EDBM_preselect_edgering_destroy(struct EditMesh_PreSelEdgeRing *psel)
static void view3d_preselect_mesh_edgering_update_verts_from_edge(struct EditMesh_PreSelEdgeRing *psel, BMesh *UNUSED(bm), BMEdge *eed_start, int previewlines, const float(*coords)[3])
void EDBM_preselect_edgering_clear(struct EditMesh_PreSelEdgeRing *psel)
void EDBM_preselect_edgering_update_from_edge(struct EditMesh_PreSelEdgeRing *psel, BMesh *bm, BMEdge *eed_start, int previewlines, const float(*coords)[3])
struct EditMesh_PreSelEdgeRing * EDBM_preselect_edgering_create(void)
void EDBM_preselect_edgering_draw(struct EditMesh_PreSelEdgeRing *psel, const float matrix[4][4])
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 float(*coords)[3])
static void view3d_preselect_mesh_edgering_update_edges_from_edge(struct EditMesh_PreSelEdgeRing *psel, BMesh *bm, BMEdge *eed_start, int previewlines, const float(*coords)[3])
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)