59 float *clip_xmin =
NULL, *clip_xmax =
NULL;
60 float *clip_ymin =
NULL, *clip_ymax =
NULL;
61 float *clip_zmin =
NULL, *clip_zmax =
NULL;
72 clip_zmin = planes[planes_len++];
75 clip_xmin = planes[planes_len++];
76 clip_xmax = planes[planes_len++];
77 clip_ymin = planes[planes_len++];
78 clip_ymax = planes[planes_len++];
81 clip_zmax = planes[planes_len++];
85 if (planes_len != 0) {
89 planes_from_projmat(projmat, clip_xmin, clip_xmax, clip_ymin, clip_ymax, clip_zmin, clip_zmax);
107 const rctf *win_rect,
108 const float content_planes[][4],
109 const int content_planes_len,
111 float r_screen_co_a[2],
112 float r_screen_co_b[2])
118 region, v_a, r_screen_co_a, clip_flag_nowin);
120 region, v_b, r_screen_co_b, clip_flag_nowin);
130 if (content_planes_len == 0) {
145 float v_a_clip[3], v_b_clip[3];
147 v_a, v_b, content_planes, content_planes_len, v_a_clip, v_b_clip)) {
173 float r_screen_co_a[2],
174 float r_screen_co_b[2])
222 const float screen_co_a[2],
223 const float screen_co_b[2],
262 const float UNUSED(no[3]))
275 data->func(
data->userData,
mv, screen_co, index);
281 void (*func)(
void *userData,
MVert *eve,
const float screen_co[2],
int index),
298 data.userData = userData;
299 data.clip_flag = clip_flag;
311 const float UNUSED(no[3]))
325 data->func(
data->userData, eve, screen_co, index);
330 void (*func)(
void *userData,
BMVert *eve,
const float screen_co[2],
int index),
344 data.userData = userData;
345 data.clip_flag = clip_flag;
372 float screen_co_a[2], screen_co_b[2];
378 data->content_planes,
379 data->content_planes_len,
385 data->func(
data->userData, eed, screen_co_a, screen_co_b, index);
389 void (*func)(
void *userData,
391 const float screen_co_a[2],
392 const float screen_co_b[2],
407 data.win_rect.xmin = 0;
408 data.win_rect.ymin = 0;
413 data.userData = userData;
414 data.clip_flag = clip_flag;
425 data.content_planes_len = 0;
455 float v_a_clip[3], v_b_clip[3];
460 float screen_co_a[2], screen_co_b[2];
466 data->content_planes,
467 data->content_planes_len,
473 data->func(
data->userData, eed, screen_co_a, screen_co_b, index);
477 void (*func)(
void *userData,
479 const float screen_co_a[2],
480 const float screen_co_b[2],
495 data.win_rect.xmin = 0;
496 data.win_rect.ymin = 0;
501 data.userData = userData;
502 data.clip_flag = clip_flag;
509 data.content_planes_len = 0;
533 const float UNUSED(no[3]))
547 data->func(
data->userData, efa, screen_co, index);
552 void (*func)(
void *userData,
BMFace *efa,
const float screen_co_b[2],
int index),
566 data.userData = userData;
567 data.clip_flag = clip_flag;
588 void (*func)(
void *userData,
593 bool handles_visible,
594 const float screen_co_b[2]),
611 for (nu = nurbs->
first; nu; nu = nu->
next) {
613 for (i = 0; i < nu->
pntsu; i++) {
616 if (bezt->
hide == 0) {
621 if (!handles_visible) {
627 func(userData, nu,
NULL, bezt, 1,
false, screen_co);
636 func(userData, nu,
NULL, bezt, 0,
true, screen_co);
643 func(userData, nu,
NULL, bezt, 1,
true, screen_co);
650 func(userData, nu,
NULL, bezt, 2,
true, screen_co);
665 func(userData, nu, bp,
NULL, -1,
false, screen_co);
680 void (*func)(
void *userData,
682 const float screen_co_b[2]),
695 func(userData, ml, screen_co);
707 void (*func)(
void *userData,
BPoint *bp,
const float screen_co[2]),
726 for (i = 0; i <
N; i++, bp++,
co += 3) {
731 func(userData, bp, screen_co);
744 void (*func)(
void *userData,
746 const float screen_co_a[2],
747 const float screen_co_b[2]),
756 float content_planes[6][4];
757 int content_planes_len;
769 content_planes_len = 0;
777 float screen_co_a[2], screen_co_b[2];
778 const float *v_a = ebone->
head, *v_b = ebone->
tail;
795 vc->
region, v_a, v_b, clip_flag, screen_co_a, screen_co_b)) {
800 func(userData, ebone, screen_co_a, screen_co_b);
811 void (*func)(
void *userData,
813 const float screen_co_a[2],
814 const float screen_co_b[2]),
827 float content_planes[6][4];
828 int content_planes_len;
833 vc->
region, ob_eval, clip_flag, content_planes);
840 content_planes_len = 0;
849 float screen_co_a[2], screen_co_b[2];
867 vc->
region, v_a, v_b, clip_flag, screen_co_a, screen_co_b)) {
872 func(userData, pchan, screen_co_a, screen_co_b);
struct Mesh * editbmesh_get_eval_cage_from_orig(struct Depsgraph *depsgraph, const struct Scene *scene, struct Object *obedit, const struct CustomData_MeshMasks *dataMask)
Blender kernel action and pose functionality.
struct bPoseChannel * BKE_pose_channel_find_name(const struct bPose *pose, const char *name)
#define PBONE_VISIBLE(arm, bone)
struct ListBase * BKE_curve_editNurbs_get(struct Curve *cu)
const CustomData_MeshMasks CD_MASK_BAREMESH
display list (or rather multi purpose list) stuff.
DispList * BKE_displist_find(struct ListBase *lb, int type)
void BKE_mesh_foreach_mapped_edge(struct Mesh *mesh, int tot_edges, void(*func)(void *userData, int index, const float v0co[3], const float v1co[3]), void *userData)
void BKE_mesh_foreach_mapped_vert(struct Mesh *mesh, void(*func)(void *userData, int index, const float co[3], const float no[3]), void *userData, MeshForeachFlag flag)
void BKE_mesh_foreach_mapped_subdiv_face_center(struct Mesh *mesh, void(*func)(void *userData, int index, const float cent[3], const float no[3]), void *userData, MeshForeachFlag flag)
void BKE_mesh_foreach_mapped_face_center(struct Mesh *mesh, void(*func)(void *userData, int index, const float cent[3], const float no[3]), void *userData, MeshForeachFlag flag)
struct Mesh * mesh_get_eval_final(struct Depsgraph *depsgraph, const struct Scene *scene, struct Object *ob, const struct CustomData_MeshMasks *dataMask)
struct Mesh * BKE_mesh_wrapper_ensure_subdivision(struct Mesh *me)
bool clip_segment_v3_plane_n(const float p1[3], const float p2[3], const float plane_array[][4], int plane_num, float r_p1[3], float r_p2[3])
void planes_from_projmat(const float mat[4][4], float left[4], float right[4], float bottom[4], float top[4], float near[4], float far[4])
bool BLI_rctf_isect_segment(const struct rctf *rect, const float s1[2], const float s2[2])
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
#define BEZT_ISSEL_ANY(bezt)
Object is a sort of wrapper for general info.
#define EBONE_VISIBLE(arm, ebone)
@ V3D_PROJ_TEST_CLIP_NEAR
@ V3D_PROJ_TEST_CLIP_CONTENT
void ED_view3d_ob_project_mat_get(const struct RegionView3D *v3d, const struct Object *ob, float r_pmat[4][4])
eV3DProjStatus ED_view3d_project_float_object(const struct ARegion *region, const float co[3], float r_co[2], eV3DProjTest flag)
void ED_view3d_clipping_local(struct RegionView3D *rv3d, const float mat[4][4])
#define ED_view3d_check_mats_rv3d(rv3d)
#define BM_elem_flag_test(ele, hflag)
void BM_mesh_elem_table_ensure(BMesh *bm, const char htype)
BLI_INLINE BMFace * BM_face_at_index(BMesh *bm, const int index)
BLI_INLINE BMEdge * BM_edge_at_index(BMesh *bm, const int index)
BLI_INLINE BMVert * BM_vert_at_index(BMesh *bm, const int index)
SyclQueue void void size_t num_bytes void
struct EditLatt * editlatt
uint32_t * subsurf_face_dot_tags
struct CurveCache * curve_cache
struct Depsgraph * depsgraph
struct RegionView3D * rv3d
struct bPoseChannel * next
float content_planes[6][4]
void(* func)(void *userData, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index)
void(* func)(void *userData, BMFace *efa, const float screen_co_b[2], int index)
void(* func)(void *userData, MVert *mv, const float screen_co[2], int index)
void(* func)(void *userData, BMVert *eve, const float screen_co[2], int index)
void armature_foreachScreenBone(struct ViewContext *vc, void(*func)(void *userData, struct EditBone *ebone, const float screen_co_a[2], const float screen_co_b[2]), void *userData, const eV3DProjTest clip_flag)
static void meshobject_foreachScreenVert__mapFunc(void *userData, int index, const float co[3], const float UNUSED(no[3]))
void mball_foreachScreenElem(struct ViewContext *vc, void(*func)(void *userData, struct MetaElem *ml, const float screen_co_b[2]), void *userData, const eV3DProjTest clip_flag)
struct foreachScreenVert_userData foreachScreenVert_userData
static bool view3d_project_segment_to_screen_with_clip_tag(const ARegion *region, const float v_a[3], const float v_b[3], const eV3DProjTest clip_flag, float r_screen_co_a[2], float r_screen_co_b[2])
void mesh_foreachScreenEdge_clip_bb_segment(ViewContext *vc, void(*func)(void *userData, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index), void *userData, eV3DProjTest clip_flag)
void mesh_foreachScreenEdge(ViewContext *vc, void(*func)(void *userData, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index), void *userData, eV3DProjTest clip_flag)
struct foreachScreenFace_userData foreachScreenFace_userData
static void mesh_foreachScreenEdge_clip_bb_segment__mapFunc(void *userData, int index, const float v_a[3], const float v_b[3])
static void mesh_foreachScreenEdge__mapFunc(void *userData, int index, const float v_a[3], const float v_b[3])
void nurbs_foreachScreenVert(ViewContext *vc, void(*func)(void *userData, Nurb *nu, BPoint *bp, BezTriple *bezt, int beztindex, bool handles_visible, const float screen_co_b[2]), void *userData, const eV3DProjTest clip_flag)
struct foreachScreenObjectVert_userData foreachScreenObjectVert_userData
void lattice_foreachScreenVert(ViewContext *vc, void(*func)(void *userData, BPoint *bp, const float screen_co[2]), void *userData, const eV3DProjTest clip_flag)
void mesh_foreachScreenVert(ViewContext *vc, void(*func)(void *userData, BMVert *eve, const float screen_co[2], int index), void *userData, eV3DProjTest clip_flag)
static void mesh_foreachScreenFace__mapFunc(void *userData, int index, const float cent[3], const float UNUSED(no[3]))
void meshobject_foreachScreenVert(ViewContext *vc, void(*func)(void *userData, MVert *eve, const float screen_co[2], int index), void *userData, eV3DProjTest clip_flag)
struct foreachScreenEdge_userData foreachScreenEdge_userData
void mesh_foreachScreenFace(ViewContext *vc, void(*func)(void *userData, BMFace *efa, const float screen_co_b[2], int index), void *userData, const eV3DProjTest clip_flag)
static void mesh_foreachScreenVert__mapFunc(void *userData, int index, const float co[3], const float UNUSED(no[3]))
static int content_planes_from_clip_flag(const ARegion *region, const Object *ob, const eV3DProjTest clip_flag, float planes[6][4])
void pose_foreachScreenBone(struct ViewContext *vc, void(*func)(void *userData, struct bPoseChannel *pchan, const float screen_co_a[2], const float screen_co_b[2]), void *userData, const eV3DProjTest clip_flag)
static bool view3d_project_segment_to_screen_with_content_clip_planes(const ARegion *region, const float v_a[3], const float v_b[3], const eV3DProjTest clip_flag, const rctf *win_rect, const float content_planes[][4], const int content_planes_len, float r_screen_co_a[2], float r_screen_co_b[2])