103 return 75.0f *
U.pixelsize;
145 bool changed =
false;
160 bool changed =
false;
224 wm_userdata->
data = esel;
244 bool changed =
false;
258 if (sel_op_result != -1) {
276 bool changed =
false;
290 if (sel_op_result != -1) {
308 bool changed =
false;
322 if (sel_op_result != -1) {
339 bool changed =
false;
344 for (index = 0; index < me->
totvert; index++,
mv++) {
346 const bool is_select =
mv->flag &
SELECT;
349 if (sel_op_result != -1) {
366 bool changed =
false;
371 for (index = 0; index < me->
totpoly; index++, mpoly++) {
376 if (sel_op_result != -1) {
411 const int (*mcoords)[2],
412 const int mcoords_len,
493 if (d1 < 0 && d2 < 0 && d3 < 0 && d4 < 0) {
496 if (d1 > 0 && d2 > 0 && d3 > 0 && d4 > 0) {
505 const float screen_co_a[2],
506 const float screen_co_b[2])
518 data->is_changed =
true;
523 const int mcoords[][2],
524 const int mcoords_len)
551 const int mcoords[][2],
552 const int mcoords_len,
558 bool changed =
false;
570 if (sel_op_result != -1) {
592 Object *ob_iter = base_iter->object;
595 Bone *bone = pchan->bone;
609 bool changed_multi =
false;
612 for (
int i = 0; i < bases_len; i++) {
613 Base *base_iter = bases[i];
617 changed_multi =
true;
622 for (
int i = 0; i < bases_len; i++) {
623 Base *base_iter = bases[i];
637 Bone *bone = pchan->bone;
642 if (sel_op_result != -1) {
644 if (sel_op_result == 0) {
655 changed_multi =
true;
658 return changed_multi;
662 const int mcoords[][2],
663 const int mcoords_len,
669 for (
int i = 0; i < bases_len; i++) {
670 Base *base_iter = bases[i];
682 return changed_multi;
687 const float screen_co[2],
697 if (sel_op_result != -1) {
699 data->is_changed =
true;
709 const float screen_co_a[2],
710 const float screen_co_b[2],
715 bool is_visible =
true;
729 if (sel_op_result != -1) {
731 data->is_done =
true;
732 data->is_changed =
true;
737 const float screen_co_a[2],
738 const float screen_co_b[2],
743 bool is_visible =
true;
756 if (sel_op_result != -1) {
758 data->is_changed =
true;
764 const float screen_co[2],
774 if (sel_op_result != -1) {
776 data->is_changed =
true;
782 const int mcoords[][2],
783 const int mcoords_len,
800 data.is_changed =
true;
815 esel = wm_userdata->
data;
846 if (
data.is_done ==
false) {
867 if (
data.is_changed) {
870 return data.is_changed;
878 bool handles_visible,
879 const float screen_co[2])
886 const bool is_select = bp->
f1 &
SELECT;
888 if (sel_op_result != -1) {
890 data->is_changed =
true;
894 if (!handles_visible) {
896 const bool is_select = bezt->
f2 &
SELECT;
898 if (sel_op_result != -1) {
901 bezt->
f1 = bezt->
f3 = bezt->
f2;
902 data->is_changed =
true;
905 uint8_t *flag_p = (&bezt->
f1) + beztindex;
906 const bool is_select = *flag_p &
SELECT;
908 if (sel_op_result != -1) {
910 data->is_changed =
true;
917 const int mcoords[][2],
918 const int mcoords_len,
921 const bool deselect_all = (sel_op ==
SEL_OP_SET);
946 if (
data.is_changed) {
949 return data.is_changed;
955 const bool is_select = bp->
f1 &
SELECT;
961 if (sel_op_result != -1) {
963 data->is_changed =
true;
967 const int mcoords[][2],
968 const int mcoords_len,
985 return data.is_changed;
990 const float screen_co_a[2],
991 const float screen_co_b[2])
999 int is_ignore_flag = 0;
1000 int is_inside_flag = 0;
1024 if (is_ignore_flag == 0) {
1035 ebone->
temp.
i = is_inside_flag | (is_ignore_flag >> 16);
1039 const float screen_co_a[2],
1040 const float screen_co_b[2])
1048 const int is_ignore_flag = ebone->
temp.
i << 16;
1049 int is_inside_flag = ebone->
temp.
i & ~0xFFFF;
1063 ebone->
temp.
i = is_inside_flag | (is_ignore_flag >> 16);
1067 const int mcoords[][2],
1068 const int mcoords_len,
1102 if (
data.is_changed) {
1105 return data.is_changed;
1110 const float screen_co[2])
1117 data->mcoords,
data->mcoords_len, screen_co[0], screen_co[1], INT_MAX));
1119 if (sel_op_result != -1) {
1121 data->is_changed =
true;
1125 const int mcoords[][2],
1126 const int mcoords_len,
1147 return data.is_changed;
1152 const float screen_co[2],
1156 const bool is_select =
mv->flag &
SELECT;
1162 if (sel_op_result != -1) {
1164 data->is_changed =
true;
1169 const int mcoords[][2],
1170 const int mcoords_len,
1182 bool changed =
false;
1194 esel = wm_userdata->
data;
1215 changed |=
data.is_changed;
1230 const int mcoords[][2],
1231 const int mcoords_len,
1242 bool changed =
false;
1253 esel = wm_userdata->
data;
1270 const int mcoords[][2],
1271 const int mcoords_len,
1275 bool changed_multi =
false;
1296 if (changed_multi) {
1302 if (changed_multi) {
1310 bool changed =
false;
1340 changed_multi =
true;
1348 return changed_multi;
1372 if (changed_multi) {
1382 ot->
name =
"Lasso Select";
1384 ot->
idname =
"VIEW3D_OT_select_lasso";
1414 #define SEL_MENU_SIZE 22
1452 bool changed =
false;
1463 if (
STREQ(name, base->object->id.name + 2)) {
1470 if (basact ==
NULL) {
1480 else if (deselect) {
1486 if (basact == oldbasact) {
1502 if ((oldbasact != basact)) {
1527 ot->
name =
"Select Menu";
1529 ot->
idname =
"VIEW3D_OT_select_menu";
1573 for (
int a = 0;
a < hits;
a++) {
1575 if (base->object->runtime.select_id == (
buffer[
a].id & ~0xFFFF0000)) {
1582 const int dist = 15 *
U.pixelsize;
1584 const int delta_px[2] = {base->sx - mval[0], base->sy - mval[1]};
1604 if (base_count == 0) {
1607 if (base_count == 1) {
1623 const char *name = ob->
id.
name + 2;
1657 if (basact ==
NULL) {
1696 if (oldbasact != basact) {
1718 ot->
name =
"Select Menu";
1720 ot->
idname =
"VIEW3D_OT_bone_select_menu";
1749 const bool is_editmode,
1760 for (
int a = 0;
a < hits;
a++) {
1761 void *bone_ptr =
NULL;
1771 const uint hit_object = hitresult & 0xFFFF;
1775 if (base->object->runtime.select_id == hit_object) {
1810 const bool is_duplicate_bone =
BLI_gset_haskey(added_bones, bone_ptr);
1812 if (!is_duplicate_bone) {
1826 if (bone_count == 0) {
1829 if (bone_count == 1) {
1841 for (base_node = base_list.
list, bone_node = bone_list.
list, i = 0; bone_node;
1842 base_node = base_node->
next, bone_node = bone_node->
next, i++) {
1879 for (
uint i = 0; i < hits; i++) {
1880 if (
buffer[i].
id & 0xFFFF0000) {
1895 const int ofs = hits15;
1905 const int ofs = hits15 + hits9;
1920 const int buffer_len,
1924 bool do_nearest_xray_if_supported,
1925 const bool do_material_slot_selection)
1928 int hits15, hits9 = 0, hits5 = 0;
1929 bool has_bones15 =
false, has_bones9 =
false, has_bones5 =
false;
1934 if (do_nearest_xray_if_supported) {
1945 vc,
buffer, buffer_len, &rect, select_mode, select_filter, do_material_slot_selection);
1950 else if (hits15 > 0) {
1957 vc,
buffer + ofs, buffer_len - ofs, &rect, select_mode, select_filter);
1962 else if (hits9 > 0) {
1968 vc,
buffer + ofs, buffer_len - ofs, &rect, select_mode, select_filter);
1973 else if (hits5 > 0) {
1982 else if (has_bones9) {
1986 else if (has_bones15) {
1995 else if (hits9 > 0) {
2012 const int buffer_len,
2019 bool do_nearest =
false;
2027 do_nearest = has_motion;
2037 *r_do_nearest = do_nearest;
2040 do_nearest = do_nearest && !enumerate;
2043 vc,
buffer, buffer_len, mval, select_filter, do_nearest,
true,
false);
2057 if (
a->depth <
b->depth) {
2060 if (
a->depth >
b->depth) {
2068 #ifdef __BIG_ENDIAN__
2073 if (sel_a < sel_b) {
2076 if (sel_a > sel_b) {
2094 bool do_bones_get_priotity,
2095 int *r_select_id_subelem)
2103 int select_id_subelem = 0;
2109 if (has_bones && do_bones_get_priotity) {
2111 for (
a = 0;
a < hits;
a++) {
2120 for (
a = 0;
a < hits;
a++) {
2129 if (hit_index != -1) {
2130 select_id =
buffer[hit_index].id & 0xFFFF;
2131 select_id_subelem = (
buffer[hit_index].id & 0xFFFF0000) >> 16;
2140 memcpy(buffer_sorted,
buffer,
sizeof(*buffer_sorted) * hits);
2142 if (has_bones && do_bones_get_priotity) {
2144 for (
a = hits - 1;
a >= 0;
a--) {
2145 if ((buffer_sorted[
a].
id & 0xFFFF0000) == 0) {
2146 buffer_sorted[
a] = buffer_sorted[--hits];
2160 const int select_id_active =
BASACT(view_layer)->object->runtime.select_id;
2161 for (
int i_next = 0, i_prev = hits - 1; i_next < hits; i_prev = i_next++) {
2162 if ((select_id_active == (
buffer[i_prev].
id & 0xFFFF)) &&
2163 (select_id_active != (
buffer[i_next].
id & 0xFFFF))) {
2171 if (hit_index == -1) {
2177 if (hit_index != -1) {
2178 select_id =
buffer[hit_index].id & 0xFFFF;
2179 select_id_subelem = (
buffer[hit_index].id & 0xFFFF0000) >> 16;
2187 for (
Base *base =
FIRSTBASE(view_layer); base; base = base->next) {
2189 if (base->object->runtime.select_id == select_id) {
2196 if (basact && r_select_id_subelem) {
2197 *r_select_id_subelem = select_id_subelem;
2212 const float mval_fl[2] = {(
float)mval[0], (
float)mval[1]};
2217 const float penalty_dist = 10.0f *
UI_DPI_FAC;
2218 Base *base = startbase;
2226 if (base == oldbasact) {
2227 dist_test += penalty_dist;
2229 if (dist_test < dist) {
2240 if (base == startbase) {
2249 int *r_material_slot)
2263 const bool do_material_slot_selection = r_material_slot !=
NULL;
2271 do_material_slot_selection);
2276 &vc,
buffer, hits, do_nearest, has_bones,
true, r_material_slot);
2298 int *r_material_slot)
2327 object =
object->next;
2339 bool changed =
false;
2346 for (
int i = 0; i < hits; i++) {
2347 const int hitresult =
buffer[i].id;
2356 if ((hitresult & 0xFFFF0000) == 0) {
2379 switch (
params->sel_op) {
2415 return changed || found;
2434 const bool enumerate,
2435 const bool object_only)
2470 gpu->do_nearest =
false;
2471 gpu->has_bones =
false;
2486 gpu->has_bones = (object_only && gpu->hits > 0) ?
2494 bool has_menu =
false;
2501 if (gpu->hits != 0) {
2506 C, &vc, gpu->buffer, gpu->hits, mval,
params, &basact_override)) {
2534 bool handled =
false;
2539 bool changed_object =
false;
2540 bool changed_pose =
false;
2541 bool changed_track =
false;
2544 bool use_activate_selected_base =
false;
2547 if (basact_override) {
2548 basact = basact_override;
2555 if (basact_override) {
2556 basact = basact_override;
2570 bool do_bones_get_priotity = (object_mode &
OB_MODE_POSE) != 0;
2577 do_bones_get_priotity,
2583 if (((gpu->hits > 0) && gpu->has_bones) ||
2591 C,
scene, basact, clip, gpu->buffer, gpu->hits,
params)) {
2594 changed_object =
true;
2596 changed_track =
true;
2602 &vc, gpu->buffer, gpu->hits, gpu->do_nearest,
false,
false,
NULL);
2608 basact ? basact : (
Base *)oldbasact,
2614 changed_pose =
true;
2619 if (basact ==
NULL) {
2627 changed_object =
true;
2652 if (oldbasact != basact) {
2653 use_activate_selected_base =
true;
2665 if (basact == oldbasact) {
2671 if (handled ==
false) {
2674 if (is_obedit ==
false) {
2687 if (basact && oldbasact) {
2701 bool found = (basact !=
NULL);
2702 if ((handled ==
false) && (vc.
obedit ==
NULL)) {
2708 else if (found ||
params->deselect_all) {
2712 changed_object =
true;
2718 if ((handled ==
false) && found) {
2726 changed_object =
true;
2730 use_activate_selected_base |= (oldbasact != basact) && (is_obedit ==
false);
2732 switch (
params->sel_op) {
2744 if (use_activate_selected_base ==
false) {
2764 changed_object =
true;
2770 if (use_activate_selected_base && (basact !=
NULL)) {
2771 changed_object =
true;
2778 if (changed_object) {
2793 return (changed_object || changed_pose || changed_track);
2813 bool changed =
false;
2821 else if (found ||
params->deselect_all) {
2829 switch (
params->sel_op) {
2870 return changed || found;
2906 bool changed =
false;
2919 if (obedit && enumerate) {
2932 if (obedit && object_only ==
false) {
3025 "Use the object center when selecting, in edit mode used to extend object selection");
3028 ot->
srna,
"enumerate", 0,
"Enumerate",
"List objects under the mouse (object mode only)");
3036 "vert_without_handles",
3038 "Control Point Without Handles",
3039 "Only select the curve control point, not it's handles");
3081 r_data->
rect = rect;
3096 const float screen_co_a[2],
3097 const float screen_co_b[2])
3099 const float radius_squared = radius * radius;
3105 const float screen_co[2],
3109 const bool is_select =
mv->flag &
SELECT;
3112 if (sel_op_result != -1) {
3114 data->is_changed =
true;
3131 bool changed =
false;
3139 else if (use_zbuf) {
3143 esel = wm_userdata->
data;
3160 changed |=
data.is_changed;
3186 bool changed =
false;
3198 esel = wm_userdata->
data;
3218 bool handles_visible,
3219 const float screen_co[2])
3225 const bool is_select = bp->
f1 &
SELECT;
3227 if (sel_op_result != -1) {
3229 data->is_changed =
true;
3233 if (!handles_visible) {
3235 const bool is_select = bezt->
f2 &
SELECT;
3237 if (sel_op_result != -1) {
3239 data->is_changed =
true;
3241 bezt->
f1 = bezt->
f3 = bezt->
f2;
3244 uint8_t *flag_p = (&bezt->
f1) + beztindex;
3245 const bool is_select = *flag_p &
SELECT;
3247 if (sel_op_result != -1) {
3249 data->is_changed =
true;
3256 const bool deselect_all = (sel_op ==
SEL_OP_SET);
3280 return data.is_changed;
3286 const bool is_select = bp->
f1 &
SELECT;
3289 if (sel_op_result != -1) {
3291 data->is_changed =
true;
3308 return data.is_changed;
3313 const float screen_co[2],
3320 if (sel_op_result != -1) {
3322 data->is_changed =
true;
3334 void *userData,
BMEdge *eed,
const float screen_co_a[2],
const float screen_co_b[2],
int index)
3338 bool is_visible =
true;
3348 if (sel_op_result != -1) {
3350 data->is_done =
true;
3351 data->is_changed =
true;
3358 void *userData,
BMEdge *eed,
const float screen_co_a[2],
const float screen_co_b[2],
int index)
3362 bool is_visible =
true;
3371 if (sel_op_result != -1) {
3373 data->is_changed =
true;
3378 const float screen_co[2],
3385 if (sel_op_result != -1) {
3387 data->is_changed =
true;
3403 data.is_changed =
true;
3418 esel = wm_userdata->
data;
3449 if (
data.is_done ==
false) {
3470 if (
data.is_changed) {
3473 return data.is_changed;
3482 bool changed =
false;
3494 int metaelem_id = 0;
3495 for (ml = mb->
editelems->
first; ml; ml = ml->next, metaelem_id += 0x10000) {
3496 bool is_inside_radius =
false;
3497 bool is_inside_stiff =
false;
3499 for (
a = 0;
a < hits;
a++) {
3500 const int hitresult =
buffer[
a].id;
3502 if (hitresult == -1) {
3506 const uint hit_object = hitresult & 0xFFFF;
3511 if (metaelem_id != (hitresult & 0xFFFF0000 & ~
MBALLSEL_ANY)) {
3516 is_inside_radius =
true;
3521 is_inside_stiff =
true;
3525 const int flag_prev = ml->flag;
3526 if (is_inside_radius) {
3529 if (is_inside_stiff) {
3533 const bool is_select = (ml->flag &
SELECT);
3534 const bool is_inside = is_inside_radius || is_inside_stiff;
3537 if (sel_op_result != -1) {
3540 changed |= (flag_prev != ml->flag);
3548 bool changed =
false;
3565 for (
uint base_index = 0; base_index < bases_len; base_index++) {
3574 for (
a = 0;
a < hits;
a++) {
3575 const int select_id =
buffer[
a].id;
3576 if (select_id != -1) {
3577 if ((select_id & 0xFFFF0000) == 0) {
3583 bases, bases_len, select_id, &ebone);
3589 for (
uint base_index = 0; base_index < bases_len; base_index++) {
3611 #ifdef __BIG_ENDIAN__
3616 if (sel_a < sel_b) {
3619 if (sel_a > sel_b) {
3632 "selection buffer");
3645 bool changed =
false;
3656 if ((base->object->runtime.select_id & 0x0000FFFF) != 0) {
3680 if (sel_op_result != -1) {
3688 if (bases !=
NULL) {
3710 "selection buffer");
3734 bases, bases_len, buf_iter->id, &bone);
3741 for (; buf_iter != buf_end; buf_iter++) {
3749 if (buf_iter + 1 != buf_end) {
3768 if (changed_multi) {
3773 if (bases !=
NULL) {
3778 return changed_multi;
3786 bool changed_multi =
false;
3804 bool changed =
false;
3849 changed_multi |= changed;
3865 if (changed_multi) {
3871 if (changed_multi) {
3879 if (changed_multi) {
3890 ot->
idname =
"VIEW3D_OT_select_box";
3950 const float screen_co[2],
3957 data->is_changed =
true;
3962 const float screen_co_a[2],
3963 const float screen_co_b[2],
3970 data->is_changed =
true;
3975 const float screen_co[2],
3982 data->is_changed =
true;
3996 bool changed =
false;
4068 changed |=
data.is_changed;
4087 bool changed =
false;
4116 const float screen_co[2],
4123 data->is_changed =
true;
4138 bool changed =
false;
4170 changed |=
data.is_changed;
4188 bool UNUSED(handles_visible),
4189 const float screen_co[2])
4198 if (beztindex == 0) {
4201 else if (beztindex == 1) {
4208 data->is_changed =
true;
4217 const bool deselect_all = (sel_op ==
SEL_OP_SET);
4241 return data.is_changed;
4250 data->is_changed =
true;
4270 return data.is_changed;
4278 const float screen_co[2])
4295 const float screen_co_a[2],
4296 const float screen_co_b[2])
4304 bool is_point_done =
false;
4305 int points_proj_tot = 0;
4311 is_point_done =
true;
4319 is_point_done =
true;
4330 if ((is_point_done ==
false) && (points_proj_tot == 2) &&
4338 data->is_changed =
true;
4341 data->is_changed |= is_point_done;
4366 if (
data.is_changed) {
4369 return data.is_changed;
4377 const float screen_co[2],
4405 const float screen_co_a[2],
4406 const float screen_co_b[2])
4415 ebone->
temp.
i =
false;
4417 bool is_point_done =
false;
4418 bool is_edge_done =
false;
4419 int points_proj_tot = 0;
4425 is_point_done =
true;
4433 is_point_done =
true;
4444 if ((is_point_done ==
false) && (points_proj_tot == 2) &&
4447 is_edge_done =
true;
4448 data->is_changed =
true;
4451 if (is_point_done || is_edge_done) {
4452 ebone->
temp.
i =
true;
4455 data->is_changed |= is_point_done;
4459 const float screen_co_a[2],
4460 const float screen_co_b[2])
4470 if (ebone->
temp.
i ==
true) {
4476 data->is_changed =
true;
4509 if (
data.is_changed) {
4514 return data.is_changed;
4519 const float screen_co[2])
4530 data->is_changed =
true;
4552 return data.is_changed;
4565 bool changed =
false;
4608 const float radius_squared = rad * rad;
4609 const float mval_fl[2] = {mval[0], mval[1]};
4611 bool changed =
false;
4619 for (base =
FIRSTBASE(view_layer); base; base = base->
next) {
4701 if (obedit ==
NULL) {
4749 if (wm_userdata == &wm_userdata_buf) {
4765 ot->
name =
"Circle Select";
4767 ot->
idname =
"VIEW3D_OT_select_circle";
typedef float(TangentPoint)[2]
Blender kernel action and pose functionality.
#define PBONE_SELECTABLE(arm, bone)
struct Scene * CTX_data_scene(const bContext *C)
struct Object * CTX_data_edit_object(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
struct View3D * CTX_wm_view3d(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct RegionView3D * CTX_wm_region_view3d(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
bool BKE_nurbList_flag_set_from_flag(ListBase *editnurb, uint8_t from_flag, uint8_t flag)
struct ListBase * BKE_curve_editNurbs_get(struct Curve *cu)
void BKE_curve_nurb_vert_active_validate(struct Curve *cu)
void BKE_nurbList_flag_set(ListBase *editnurb, uint8_t flag, bool set)
BMEditMesh * BKE_editmesh_from_object(struct Object *ob)
Return the BMEditMesh for a given object.
#define FOREACH_BASE_IN_MODE_END
#define BKE_view_layer_array_from_bases_in_edit_mode(view_layer, v3d, r_len)
#define FOREACH_OBJECT_IN_MODE_END
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
#define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, v3d, r_len)
#define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance)
#define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance)
bool BKE_mball_deselect_all(struct MetaBall *mb)
struct Mesh * BKE_mesh_from_object(struct Object *ob)
void BKE_mesh_mselect_active_set(struct Mesh *me, int index, int type)
void BKE_mesh_mselect_validate(struct Mesh *me)
General operations, lookup, etc. for blender objects.
struct MovieClip * BKE_object_movieclip_get(struct Scene *scene, struct Object *ob, bool use_default)
struct Object * BKE_object_pose_armature_get_with_wpaint_check(struct Object *ob)
void BKE_object_update_select_id(struct Main *bmain)
struct Object * BKE_object_pose_armature_get(struct Object *ob)
bool BKE_object_is_mode_compat(const struct Object *ob, eObjectMode object_mode)
bool BKE_object_is_in_editmode(const struct Object *ob)
bool BKE_paint_select_elem_test(struct Object *ob)
bool BKE_paint_select_vert_test(struct Object *ob)
bool BKE_paint_select_face_test(struct Object *ob)
void BKE_tracking_track_deselect(struct MovieTrackingTrack *track, int area)
#define TRACK_SELECTED(track)
void BKE_tracking_track_select(struct ListBase *tracksbase, struct MovieTrackingTrack *track, int area, bool extend)
struct MovieTrackingTrack * BKE_tracking_track_get_indexed(struct MovieTracking *tracking, int tracknr, struct ListBase **r_tracksbase)
struct ListBase * BKE_tracking_object_get_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object)
A (mainly) macro array library.
#define BLI_array_append(arr, item)
#define BLI_array_declare(arr)
#define BLI_array_len(arr)
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
#define BLI_BITMAP_TEST_BOOL(_bitmap, _index)
BLI_INLINE void BLI_endian_switch_uint32(unsigned int *val) ATTR_NONNULL(1)
bool BLI_gset_haskey(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
GSet * BLI_gset_ptr_new(const char *info)
void BLI_gset_insert(GSet *gs, void *key)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_lasso_is_point_inside(const int mcoords[][2], unsigned int mcoords_len, int sx, int sy, int error_value)
void BLI_lasso_boundbox(struct rcti *rect, const int mcoords[][2], unsigned int mcoords_len)
bool BLI_lasso_is_edge_inside(const int mcoords[][2], unsigned int mcoords_len, int x0, int y0, int x1, int y1, int error_value)
void BLI_linklist_free(LinkNode *list, LinkNodeFreeFP freefunc)
void void void void BLI_linklist_append(LinkNodePair *list_pair, void *ptr) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
float dist_squared_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2])
MINLINE float len_squared_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
MINLINE float len_manhattan_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE int len_manhattan_v2_int(const int v[2]) ATTR_WARN_UNUSED_RESULT
bool BLI_rctf_isect_pt_v(const struct rctf *rect, const float xy[2])
void BLI_rcti_init_pt_radius(struct rcti *rect, const int xy[2], int size)
bool BLI_rcti_isect_pt(const struct rcti *rect, int x, int y)
bool BLI_rctf_isect_segment(const struct rctf *rect, const float s1[2], const float s2[2])
void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src)
bool BLI_rcti_is_empty(const struct rcti *rect)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
#define UNUSED_VARS_NDEBUG(...)
#define SET_FLAG_FROM_TEST(value, test, flag)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
#define GPENCIL_ANY_MODE(gpd)
#define OB_MODE_ALL_WEIGHT_PAINT
Object is a sort of wrapper for general info.
#define FIRSTBASE(_view_layer)
#define BASACT(_view_layer)
#define SCE_SELECT_VERTEX
#define BASE_VISIBLE(v3d, base)
@ USER_GPU_FLAG_NO_DEPT_PICK
uint DRW_select_buffer_context_offset_for_object_elem(struct Depsgraph *depsgraph, struct Object *object, char elem_type)
uint * DRW_select_buffer_bitmap_from_rect(struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, const struct rcti *rect, uint *r_bitmap_len)
uint * DRW_select_buffer_bitmap_from_circle(struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, const int center[2], int radius, uint *r_bitmap_len)
uint * DRW_select_buffer_bitmap_from_poly(struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, const int poly[][2], int poly_len, const struct rcti *rect, uint *r_bitmap_len)
void DRW_select_buffer_context_create(struct Base **bases, uint bases_len, short select_mode)
#define EBONE_VISIBLE(arm, ebone)
#define EBONE_SELECTABLE(arm, ebone)
bool ED_lattice_flags_set(struct Object *obedit, int flag)
bool ED_lattice_select_pick(struct bContext *C, const int mval[2], const struct SelectPick_Params *params)
bool ED_mball_select_pick(struct bContext *C, const int mval[2], const struct SelectPick_Params *params)
bool paintvert_deselect_all_visible(struct Object *ob, int action, bool flush_flags)
#define ED_MESH_PICK_DEFAULT_VERT_DIST
bool EDBM_select_pick(struct bContext *C, const int mval[2], const struct SelectPick_Params *params)
bool paintface_deselect_all_visible(struct bContext *C, struct Object *ob, int action, bool flush_flags)
void em_setup_viewcontext(struct bContext *C, struct ViewContext *vc)
void paintface_flush_flags(struct bContext *C, struct Object *ob, short flag)
void paintvert_flush_flags(struct Object *ob)
bool paintface_mouse_select(struct bContext *C, const int mval[2], const struct SelectPick_Params *params, struct Object *ob)
void EDBM_flag_disable_all(struct BMEditMesh *em, char hflag)
bool ED_mesh_pick_vert(struct bContext *C, struct Object *ob, const int mval[2], uint dist_px, bool use_zbuf, uint *r_index)
void paintvert_tag_select_update(struct bContext *C, struct Object *ob)
void EDBM_selectmode_flush(struct BMEditMesh *em)
void ED_object_mode_generic_exit(struct Main *bmain, struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode)
void ED_object_base_activate(struct bContext *C, struct Base *base)
void ED_outliner_select_sync_from_object_tag(struct bContext *C)
void ED_outliner_select_sync_from_edit_bone_tag(struct bContext *C)
void ED_outliner_select_sync_from_pose_bone_tag(struct bContext *C)
int PE_lasso_select(struct bContext *C, const int mcoords[][2], int mcoords_len, int sel_op)
bool PE_circle_select(struct bContext *C, struct wmGenericUserData *wm_userdata, int sel_op, const int mval[2], float rad)
bool PE_box_select(struct bContext *C, const struct rcti *rect, int sel_op)
bool PE_mouse_particles(struct bContext *C, const int mval[2], const struct SelectPick_Params *params)
bool ED_operator_view3d_active(struct bContext *C)
bool ED_operator_region_view3d_active(struct bContext *C)
int ED_select_op_action_deselected(eSelectOp sel_op, bool is_select, bool is_inside)
eSelectOp ED_select_op_modal(eSelectOp sel_op, bool is_first)
void ED_select_pick_params_from_operator(struct PointerRNA *ptr, struct SelectPick_Params *params) ATTR_NONNULL(1
#define SEL_OP_USE_PRE_DESELECT(sel_op)
const char * ED_select_circle_get_name(struct wmOperatorType *ot, PointerRNA *ptr)
#define SEL_OP_CAN_DESELECT(sel_op)
eSelectOp ED_select_op_from_operator(struct PointerRNA *ptr) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
void const char * ED_select_pick_get_name(struct wmOperatorType *ot, PointerRNA *ptr)
#define SEL_OP_USE_OUTSIDE(sel_op)
#define V3D_PROJ_TEST_CLIP_CONTENT_DEFAULT
#define XRAY_ENABLED(v3d)
int view3d_opengl_select_ex(struct ViewContext *vc, struct GPUSelectResult *buffer, unsigned int buffer_len, const struct rcti *input, eV3DSelectMode select_mode, eV3DSelectObjectFilter select_filter, bool do_material_slot_selection)
void view3d_opengl_select_cache_end(void)
eV3DProjStatus ED_view3d_project_base(const struct ARegion *region, struct Base *base)
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, eV3DProjTest clip_flag)
@ V3D_PROJ_TEST_CLIP_NEAR
void mball_foreachScreenElem(struct ViewContext *vc, void(*func)(void *userData, struct MetaElem *ml, const float screen_co[2]), void *userData, eV3DProjTest clip_flag)
int view3d_opengl_select(struct ViewContext *vc, struct GPUSelectResult *buffer, unsigned int buffer_len, const struct rcti *input, eV3DSelectMode select_mode, eV3DSelectObjectFilter select_filter)
eV3DProjStatus ED_view3d_project_float_global(const struct ARegion *region, const float co[3], float r_co[2], eV3DProjTest flag)
void mesh_foreachScreenEdge_clip_bb_segment(struct ViewContext *vc, void(*func)(void *userData, struct BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index), void *userData, eV3DProjTest clip_flag)
void mesh_foreachScreenVert(struct ViewContext *vc, void(*func)(void *userData, struct BMVert *eve, const float screen_co[2], int index), void *userData, eV3DProjTest clip_flag)
void meshobject_foreachScreenVert(struct ViewContext *vc, void(*func)(void *userData, struct MVert *eve, const float screen_co[2], int index), void *userData, eV3DProjTest clip_flag)
void view3d_opengl_select_cache_begin(void)
void lattice_foreachScreenVert(struct ViewContext *vc, void(*func)(void *userData, struct BPoint *bp, const float screen_co[2]), void *userData, eV3DProjTest clip_flag)
#define V3D_PROJ_TEST_CLIP_DEFAULT
@ VIEW3D_SELECT_PICK_NEAREST
eV3DSelectObjectFilter ED_view3d_select_filter_from_mode(const struct Scene *scene, const struct Object *obact)
#define XRAY_FLAG_ENABLED(v3d)
void view3d_operator_needs_opengl(const struct bContext *C)
void nurbs_foreachScreenVert(struct ViewContext *vc, void(*func)(void *userData, struct Nurb *nu, struct BPoint *bp, struct BezTriple *bezt, int beztindex, bool handle_visible, const float screen_co[2]), void *userData, eV3DProjTest clip_flag)
void ED_view3d_init_mats_rv3d(const struct Object *ob, struct RegionView3D *rv3d)
@ VIEW3D_SELECT_FILTER_NOP
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, eV3DProjTest clip_flag)
void mesh_foreachScreenFace(struct ViewContext *vc, void(*func)(void *userData, struct BMFace *efa, const float screen_co[2], int index), void *userData, eV3DProjTest clip_flag)
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
#define GPU_matrix_set(x)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
int UI_icon_from_id(const struct ID *id)
@ OPTYPE_DEPENDS_ON_CURSOR
bool ED_armature_edit_select_pick_bone(bContext *C, Base *basact, EditBone *ebone, const int selmask, const struct SelectPick_Params *params)
bool ED_armature_edit_deselect_all_visible(Object *obedit)
bool ED_armature_edit_select_pick(bContext *C, const int mval[2], const struct SelectPick_Params *params)
Base * ED_armature_base_and_bone_from_select_buffer(Base **bases, uint bases_len, const uint select_id, Bone **r_bone)
Base * ED_armature_base_and_pchan_from_select_buffer(Base **bases, uint bases_len, const uint select_id, bPoseChannel **r_pchan)
Base * ED_armature_base_and_ebone_from_select_buffer(Base **bases, uint bases_len, const uint select_id, EditBone **r_ebone)
bool ED_armature_edit_select_op_from_tagged(bArmature *arm, const int sel_op)
bool ED_armature_edit_deselect_all_visible_multi_ex(struct Base **bases, uint bases_len)
void ED_armature_ebone_listbase_temp_clear(ListBase *lb)
void ED_armature_edit_sync_selection(ListBase *edbo)
void ED_armature_edit_validate_active(struct bArmature *arm)
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
void BM_face_select_set(BMesh *bm, BMFace *f, const bool select)
Select Face.
void BM_mesh_select_mode_flush_ex(BMesh *bm, const short selectmode, eBMSelectionFlushFLags flags)
Select Mode Flush.
void BM_vert_select_set(BMesh *bm, BMVert *v, const bool select)
Select Vert.
void BM_edge_select_set(BMesh *bm, BMEdge *e, const bool select)
Select Edge.
@ BM_SELECT_LEN_FLUSH_RECALC_ALL
@ BM_SELECT_LEN_FLUSH_RECALC_NOTHING
ATTR_WARN_UNUSED_RESULT const BMVert * v2
const Depsgraph * depsgraph
bool ED_curve_editnurb_select_pick(bContext *C, const int mval[2], const int dist_px, const bool vert_without_handles, const struct SelectPick_Params *params)
bool ED_curve_editfont_select_pick(bContext *C, const int mval[2], const struct SelectPick_Params *params)
static bool is_inside(int x, int y, int cols, int rows)
ccl_global float * buffer
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
bool ED_armature_pose_select_pick_bone(ViewLayer *view_layer, View3D *v3d, Object *ob, Bone *bone, const struct SelectPick_Params *params)
void ED_pose_bone_select_tag_update(Object *ob)
bool ED_pose_deselect_all(Object *ob, int select_mode, const bool ignore_visibility)
bool ED_armature_pose_select_pick_with_buffer(ViewLayer *view_layer, View3D *v3d, Base *base, const struct GPUSelectResult *buffer, const short hits, const struct SelectPick_Params *params, bool do_nearest)
void ED_armature_pose_select_in_wpaint_mode(ViewLayer *view_layer, Base *base_select)
void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values)
void RNA_int_get_array(PointerRNA *ptr, const char *name, int *values)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
int RNA_int_get(PointerRNA *ptr, const char *name)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_int_vector(StructOrFunctionRNA *cont_, const char *identifier, int len, const int *default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const EnumPropertyItem DummyRNA_NULL_items[]
eBezTriple_Flag select_flag
eBezTriple_Flag select_flag
BLI_bitmap * select_bitmap
eBezTriple_Flag select_flag
struct MovieTracking tracking
struct ToolSettings * toolsettings
struct Depsgraph * depsgraph
struct ViewLayer * view_layer
struct RegionView3D * rv3d
wmGenericUserDataFreeFn free_fn
wmGenericUserData user_data
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
void(* cancel)(struct bContext *, struct wmOperator *)
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
const char *(* get_name)(struct wmOperatorType *, struct PointerRNA *)
static bool pchan_circle_doSelectJoint(void *userData, bPoseChannel *pchan, const float screen_co[2])
static bool do_mesh_box_select(ViewContext *vc, wmGenericUserData *wm_userdata, const rcti *rect, const eSelectOp sel_op)
static bool edbm_backbuf_check_and_select_verts(struct EditSelectBuf_Cache *esel, Depsgraph *depsgraph, Object *ob, BMEditMesh *em, const eSelectOp sel_op)
void VIEW3D_OT_select(wmOperatorType *ot)
static bool bone_mouse_select_menu(bContext *C, const GPUSelectResult *buffer, const int hits, const bool is_editmode, const struct SelectPick_Params *params)
static void do_nurbs_box_select__doSelect(void *userData, Nurb *UNUSED(nu), BPoint *bp, BezTriple *bezt, int beztindex, bool handles_visible, const float screen_co[2])
static bool edbm_backbuf_check_and_select_verts_obmode(Mesh *me, struct EditSelectBuf_Cache *esel, const eSelectOp sel_op)
static bool armature_circle_select(ViewContext *vc, const eSelectOp sel_op, const int mval[2], float rad)
static bool paint_facesel_circle_select(ViewContext *vc, wmGenericUserData *wm_userdata, const eSelectOp sel_op, const int mval[2], float rad)
static Base ** do_pose_tag_select_op_prepare(ViewContext *vc, uint *r_bases_len)
static bool object_deselect_all_except(ViewLayer *view_layer, Base *b)
static bool object_deselect_all_visible(ViewLayer *view_layer, View3D *v3d)
static const EnumPropertyItem * object_select_menu_enum_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
static int mixed_bones_object_selectbuffer_extended(ViewContext *vc, GPUSelectResult *buffer, const int buffer_len, const int mval[2], eV3DSelectObjectFilter select_filter, bool use_cycle, bool enumerate, bool *r_do_nearest)
static bool armature_circle_doSelectJoint(void *userData, EditBone *ebone, const float screen_co[2], bool head)
static int view3d_box_select_exec(bContext *C, wmOperator *op)
static void mesh_circle_doSelectEdge(void *userData, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int UNUSED(index))
static bool do_lattice_box_select(ViewContext *vc, rcti *rect, const eSelectOp sel_op)
static int view3d_lasso_select_exec(bContext *C, wmOperator *op)
static void do_lasso_select_armature__doSelectBone(void *userData, EditBone *ebone, const float screen_co_a[2], const float screen_co_b[2])
static void do_circle_select_mball__doSelectElem(void *userData, struct MetaElem *ml, const float screen_co[2])
void VIEW3D_OT_bone_select_menu(wmOperatorType *ot)
static bool ed_wpaint_vertex_select_pick(bContext *C, const int mval[2], const struct SelectPick_Params *params, Object *obact)
static bool do_lasso_select_armature(ViewContext *vc, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
void VIEW3D_OT_select_box(wmOperatorType *ot)
static int gpu_select_buffer_depth_id_cmp(const void *sel_a_p, const void *sel_b_p)
static void editselect_buf_cache_init_with_generic_userdata(wmGenericUserData *wm_userdata, ViewContext *vc, short select_mode)
static void mesh_circle_doSelectVert(void *userData, BMVert *eve, const float screen_co[2], int UNUSED(index))
static bool do_lasso_select_objects(ViewContext *vc, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static void latticecurve_circle_doSelect(void *userData, BPoint *bp, const float screen_co[2])
static bool object_mouse_select_menu(bContext *C, ViewContext *vc, const GPUSelectResult *buffer, const int hits, const int mval[2], const struct SelectPick_Params *params, Base **r_basact)
static void do_mesh_box_select__doSelectFace(void *userData, BMFace *efa, const float screen_co[2], int UNUSED(index))
Object * ED_view3d_give_object_under_cursor(bContext *C, const int mval[2])
static void do_lasso_select_meshobject__doSelectVert(void *userData, MVert *mv, const float screen_co[2], int UNUSED(index))
static bool do_lasso_select_lattice(ViewContext *vc, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static int view3d_circle_select_exec(bContext *C, wmOperator *op)
struct BoxSelectUserData BoxSelectUserData
static bool edge_fully_inside_rect(const rctf *rect, const float v1[2], const float v2[2])
static bool do_lasso_select_paintvert(ViewContext *vc, wmGenericUserData *wm_userdata, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static void do_lasso_select_lattice__doSelect(void *userData, BPoint *bp, const float screen_co[2])
static bool do_lasso_select_curve(ViewContext *vc, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static void view3d_userdata_lassoselect_init(LassoSelectUserData *r_data, ViewContext *vc, const rcti *rect, const int(*mcoords)[2], const int mcoords_len, const eSelectOp sel_op)
struct SelMenuItemF SelMenuItemF
static bool edge_inside_rect(const rctf *rect, const float v1[2], const float v2[2])
static void do_circle_select_armature__doSelectBone(void *userData, struct EditBone *ebone, const float screen_co_a[2], const float screen_co_b[2])
static int view3d_circle_select_modal(bContext *C, wmOperator *op, const wmEvent *event)
static SelMenuItemF object_mouse_select_menu_data[SEL_MENU_SIZE]
static bool lattice_circle_select(ViewContext *vc, const eSelectOp sel_op, const int mval[2], float rad)
static bool object_circle_select(ViewContext *vc, const eSelectOp sel_op, const int mval[2], float rad)
static int selectbuffer_ret_hits_15(GPUSelectResult *UNUSED(buffer), const int hits15)
static bool paint_vertsel_circle_select(ViewContext *vc, wmGenericUserData *wm_userdata, const eSelectOp sel_op, const int mval[2], float rad)
static void do_lasso_select_mesh__doSelectEdge_pass1(void *user_data, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index)
static void do_mesh_box_select__doSelectEdge_pass1(void *userData, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index)
static void do_lasso_select_armature__doSelectBone_clip_content(void *userData, EditBone *ebone, const float screen_co_a[2], const float screen_co_b[2])
static void do_lasso_select_curve__doSelect(void *userData, Nurb *UNUSED(nu), BPoint *bp, BezTriple *bezt, int beztindex, bool handles_visible, const float screen_co[2])
static void view3d_userdata_circleselect_init(CircleSelectUserData *r_data, ViewContext *vc, const bool select, const int mval[2], const float rad)
static int mixed_bones_object_selectbuffer(ViewContext *vc, GPUSelectResult *buffer, const int buffer_len, const int mval[2], eV3DSelectObjectFilter select_filter, bool do_nearest, bool do_nearest_xray_if_supported, const bool do_material_slot_selection)
static int selectbuffer_ret_hits_9(GPUSelectResult *buffer, const int hits15, const int hits9)
static bool do_pose_tag_select_op_exec(Base **bases, const uint bases_len, const eSelectOp sel_op)
static int selectbuffer_ret_hits_5(GPUSelectResult *buffer, const int hits15, const int hits9, const int hits5)
static void paint_vertsel_circle_select_doSelectVert(void *userData, MVert *mv, const float screen_co[2], int UNUSED(index))
static void do_lasso_tag_pose(ViewContext *vc, Object *ob, const int mcoords[][2], const int mcoords_len)
void VIEW3D_OT_select_menu(wmOperatorType *ot)
static void mesh_circle_doSelectFace(void *userData, BMFace *efa, const float screen_co[2], int UNUSED(index))
void ED_view3d_viewcontext_init(bContext *C, ViewContext *vc, Depsgraph *depsgraph)
static void do_paintvert_box_select__doSelectVert(void *userData, MVert *mv, const float screen_co[2], int UNUSED(index))
static void do_lasso_select_pose__do_tag(void *userData, struct bPoseChannel *pchan, const float screen_co_a[2], const float screen_co_b[2])
static bool edbm_backbuf_check_and_select_faces(struct EditSelectBuf_Cache *esel, Depsgraph *depsgraph, Object *ob, BMEditMesh *em, const eSelectOp sel_op)
struct CircleSelectUserData CircleSelectUserData
static bool pose_circle_select(ViewContext *vc, const eSelectOp sel_op, const int mval[2], float rad)
static void do_circle_select_armature__doSelectBone_clip_content(void *userData, struct EditBone *ebone, const float screen_co_a[2], const float screen_co_b[2])
bool ED_view3d_is_object_under_cursor(bContext *C, const int mval[2])
static void do_lasso_select_mball__doSelectElem(void *userData, struct MetaElem *ml, const float screen_co[2])
static bool do_armature_box_select(ViewContext *vc, const rcti *rect, const eSelectOp sel_op)
static void view3d_circle_select_cancel(bContext *C, wmOperator *op)
static int object_select_menu_exec(bContext *C, wmOperator *op)
static bool obedit_circle_select(bContext *C, ViewContext *vc, wmGenericUserData *wm_userdata, const eSelectOp sel_op, const int mval[2], float rad)
static void editselect_buf_cache_init(ViewContext *vc, short select_mode)
static void view3d_userdata_boxselect_init(BoxSelectUserData *r_data, ViewContext *vc, const rcti *rect, const eSelectOp sel_op)
struct Object * ED_view3d_give_material_slot_under_cursor(struct bContext *C, const int mval[2], int *r_material_slot)
static bool edbm_backbuf_check_and_select_edges(struct EditSelectBuf_Cache *esel, Depsgraph *depsgraph, Object *ob, BMEditMesh *em, const eSelectOp sel_op)
static bool view3d_lasso_select(bContext *C, ViewContext *vc, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static void nurbscurve_circle_doSelect(void *userData, Nurb *UNUSED(nu), BPoint *bp, BezTriple *bezt, int beztindex, bool UNUSED(handles_visible), const float screen_co[2])
static void do_lasso_select_mesh__doSelectVert(void *userData, BMVert *eve, const float screen_co[2], int UNUSED(index))
static bool do_object_box_select(bContext *C, ViewContext *vc, rcti *rect, const eSelectOp sel_op)
static Base * mouse_select_object_center(ViewContext *vc, Base *startbase, const int mval[2])
static void do_mesh_box_select__doSelectEdge_pass0(void *userData, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index)
static bool do_lasso_select_meta(ViewContext *vc, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static void do_mesh_box_select__doSelectVert(void *userData, BMVert *eve, const float screen_co[2], int UNUSED(index))
static Base * mouse_select_eval_buffer(ViewContext *vc, const GPUSelectResult *buffer, int hits, bool do_nearest, bool has_bones, bool do_bones_get_priotity, int *r_select_id_subelem)
static Base * ed_view3d_give_base_under_cursor_ex(bContext *C, const int mval[2], int *r_material_slot)
static bool do_meta_box_select(ViewContext *vc, const rcti *rect, const eSelectOp sel_op)
static void do_lasso_select_mesh__doSelectEdge_pass0(void *user_data, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index)
static bool do_lasso_select_pose(ViewContext *vc, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static bool do_lasso_select_mesh(ViewContext *vc, wmGenericUserData *wm_userdata, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static void deselect_all_tracks(MovieTracking *tracking)
static bool do_nurbs_box_select(ViewContext *vc, rcti *rect, const eSelectOp sel_op)
static void editselect_buf_cache_free(struct EditSelectBuf_Cache *esel)
Base * ED_view3d_give_base_under_cursor(bContext *C, const int mval[2])
static bool do_paintvert_box_select(ViewContext *vc, wmGenericUserData *wm_userdata, const rcti *rect, const eSelectOp sel_op)
static void editselect_buf_cache_free_voidp(void *esel_voidp)
static bool ed_object_select_pick_camera_track(bContext *C, Scene *scene, Base *basact, MovieClip *clip, const struct GPUSelectResult *buffer, const short hits, const struct SelectPick_Params *params)
struct LassoSelectUserData LassoSelectUserData
static bool mesh_circle_select(ViewContext *vc, wmGenericUserData *wm_userdata, eSelectOp sel_op, const int mval[2], float rad)
static void view3d_circle_select_recalc(void *user_data)
bool edge_inside_circle(const float cent[2], float radius, const float screen_co_a[2], const float screen_co_b[2])
void VIEW3D_OT_select_circle(wmOperatorType *ot)
static void do_lasso_select_mesh__doSelectFace(void *userData, BMFace *efa, const float screen_co[2], int UNUSED(index))
static bool do_pose_box_select(bContext *C, ViewContext *vc, rcti *rect, const eSelectOp sel_op)
void ED_view3d_viewcontext_init_object(ViewContext *vc, Object *obact)
void VIEW3D_OT_select_lasso(wmOperatorType *ot)
static void do_circle_select_pose__doSelectBone(void *userData, struct bPoseChannel *pchan, const float screen_co_a[2], const float screen_co_b[2])
static bool edbm_backbuf_check_and_select_faces_obmode(Mesh *me, struct EditSelectBuf_Cache *esel, const eSelectOp sel_op)
float ED_view3d_select_dist_px(void)
static int opengl_bone_select_buffer_cmp(const void *sel_a_p, const void *sel_b_p)
static bool mball_circle_select(ViewContext *vc, const eSelectOp sel_op, const int mval[2], float rad)
static void do_lattice_box_select__doSelect(void *userData, BPoint *bp, const float screen_co[2])
static int view3d_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool do_paintface_box_select(ViewContext *vc, wmGenericUserData *wm_userdata, const rcti *rect, int sel_op)
static bool do_lasso_select_paintface(ViewContext *vc, wmGenericUserData *wm_userdata, const int mcoords[][2], const int mcoords_len, const eSelectOp sel_op)
static bool nurbscurve_circle_select(ViewContext *vc, const eSelectOp sel_op, const int mval[2], float rad)
static bool selectbuffer_has_bones(const GPUSelectResult *buffer, const uint hits)
static bool view3d_selectable_data(bContext *C)
static int bone_select_menu_exec(bContext *C, wmOperator *op)
static bool ed_object_select_pick(bContext *C, const int mval[2], const struct SelectPick_Params *params, const bool center, const bool enumerate, const bool object_only)
static int view3d_select_exec(bContext *C, wmOperator *op)
bool WM_cursor_test_motion_and_update(const int mval[2])
void WM_main_add_notifier(unsigned int type, void *reference)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
bool WM_gesture_is_modal_first(const wmGesture *gesture)
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
int WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_circle_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_gesture_circle_cancel(bContext *C, wmOperator *op)
int WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_circle_modal(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_lasso_modal(bContext *C, wmOperator *op, const wmEvent *event)
void WM_gesture_lasso_cancel(bContext *C, wmOperator *op)
int WM_gesture_lasso_invoke(bContext *C, wmOperator *op, const wmEvent *event)
const int(* WM_gesture_lasso_path_to_array(bContext *UNUSED(C), wmOperator *op, int *r_mcoords_len))[2]
void WM_operator_properties_border_to_rcti(struct wmOperator *op, rcti *rect)
void WM_operator_properties_gesture_box(wmOperatorType *ot)
void WM_operator_properties_select_operation_simple(wmOperatorType *ot)
void WM_operator_properties_select_operation(wmOperatorType *ot)
void WM_operator_properties_gesture_lasso(wmOperatorType *ot)
void WM_operator_properties_gesture_circle(wmOperatorType *ot)
void WM_operator_properties_mouse_select(wmOperatorType *ot)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
int WM_operator_flag_only_pass_through_on_press(int retval, const struct wmEvent *event)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void WM_operator_properties_free(PointerRNA *ptr)
void WM_generic_user_data_free(wmGenericUserData *wm_userdata)