119 return 75.0f *
U.pixelsize;
159 bool changed =
false;
174 bool changed =
false;
238 wm_userdata->
data = esel;
258 bool changed =
false;
272 if (sel_op_result != -1) {
290 bool changed =
false;
304 if (sel_op_result != -1) {
322 bool changed =
false;
336 if (sel_op_result != -1) {
353 bool changed =
false;
358 for (index = 0; index < me->
totvert; index++,
mv++) {
360 const bool is_select =
mv->flag &
SELECT;
363 if (sel_op_result != -1) {
380 bool changed =
false;
385 for (index = 0; index < me->
totpoly; index++, mpoly++) {
390 if (sel_op_result != -1) {
425 const int (*mcoords)[2],
426 const int mcoords_len,
507 if (d1 < 0 && d2 < 0 && d3 < 0 && d4 < 0) {
510 if (d1 > 0 && d2 > 0 && d3 > 0 && d4 > 0) {
519 const float screen_co_a[2],
520 const float screen_co_b[2])
526 bool is_point_done =
false;
527 int points_proj_tot = 0;
535 is_point_done =
true;
545 is_point_done =
true;
550 if ((is_point_done ==
true) || ((is_point_done ==
false) && (points_proj_tot == 2) &&
558 data->is_changed |= is_point_done;
563 const int mcoords[][2],
564 const int mcoords_len)
587 const int mcoords[][2],
588 const int mcoords_len,
594 bool changed =
false;
606 if (sel_op_result != -1) {
628 Object *ob_iter = base_iter->object;
631 Bone *bone = pchan->bone;
645 bool changed_multi =
false;
648 for (
int i = 0; i < bases_len; i++) {
649 Base *base_iter = bases[i];
653 changed_multi =
true;
658 for (
int i = 0; i < bases_len; i++) {
659 Base *base_iter = bases[i];
673 Bone *bone = pchan->bone;
678 if (sel_op_result != -1) {
680 if (sel_op_result == 0) {
691 changed_multi =
true;
694 return changed_multi;
698 const int mcoords[][2],
699 const int mcoords_len,
705 for (
int i = 0; i < bases_len; i++) {
706 Base *base_iter = bases[i];
718 return changed_multi;
723 const float screen_co[2],
733 if (sel_op_result != -1) {
735 data->is_changed =
true;
745 const float screen_co_a[2],
746 const float screen_co_b[2],
751 bool is_visible =
true;
765 if (sel_op_result != -1) {
767 data->is_done =
true;
768 data->is_changed =
true;
773 const float screen_co_a[2],
774 const float screen_co_b[2],
779 bool is_visible =
true;
792 if (sel_op_result != -1) {
794 data->is_changed =
true;
800 const float screen_co[2],
810 if (sel_op_result != -1) {
812 data->is_changed =
true;
818 const int mcoords[][2],
819 const int mcoords_len,
836 data.is_changed =
true;
851 esel = wm_userdata->
data;
881 if (
data.is_done ==
false) {
898 if (
data.is_changed) {
901 return data.is_changed;
909 bool handles_visible,
910 const float screen_co[2])
917 const bool is_select = bp->
f1 &
SELECT;
919 if (sel_op_result != -1) {
921 data->is_changed =
true;
925 if (!handles_visible) {
927 const bool is_select = bezt->
f2 &
SELECT;
929 if (sel_op_result != -1) {
932 bezt->
f1 = bezt->
f3 = bezt->
f2;
933 data->is_changed =
true;
936 uint8_t *flag_p = (&bezt->
f1) + beztindex;
937 const bool is_select = *flag_p &
SELECT;
939 if (sel_op_result != -1) {
941 data->is_changed =
true;
948 const int mcoords[][2],
949 const int mcoords_len,
952 const bool deselect_all = (sel_op ==
SEL_OP_SET);
977 if (
data.is_changed) {
980 return data.is_changed;
986 const bool is_select = bp->
f1 &
SELECT;
992 if (sel_op_result != -1) {
994 data->is_changed =
true;
998 const int mcoords[][2],
999 const int mcoords_len,
1016 return data.is_changed;
1021 const float screen_co_a[2],
1022 const float screen_co_b[2])
1027 int is_ignore_flag = 0;
1028 int is_inside_flag = 0;
1052 if (is_ignore_flag == 0) {
1063 ebone->
temp.
i = is_inside_flag | (is_ignore_flag >> 16);
1068 const int mcoords[][2],
1069 const int mcoords_len,
1094 if (
data.is_changed) {
1097 return data.is_changed;
1102 const float screen_co[2])
1109 data->mcoords,
data->mcoords_len, screen_co[0], screen_co[1], INT_MAX));
1111 if (sel_op_result != -1) {
1113 data->is_changed =
true;
1117 const int mcoords[][2],
1118 const int mcoords_len,
1139 return data.is_changed;
1144 const float screen_co[2],
1148 const bool is_select =
mv->flag &
SELECT;
1154 if (sel_op_result != -1) {
1156 data->is_changed =
true;
1161 const int mcoords[][2],
1162 const int mcoords_len,
1174 bool changed =
false;
1186 esel = wm_userdata->
data;
1207 changed |=
data.is_changed;
1222 const int mcoords[][2],
1223 const int mcoords_len,
1234 bool changed =
false;
1245 esel = wm_userdata->
data;
1268 float node_centf[2];
1269 bool changed =
false;
1275 node_centf[0] = BLI_RCT_CENTER_X(&
node->totr);
1276 node_centf[1] = BLI_RCT_CENTER_Y(&
node->totr);
1278 ipoco_to_areaco_noclip(
G.v2d, node_centf, node_cent);
1283 if (sel_op_result != -1) {
1289 BIF_undo_push(
"Lasso select nodes");
1296 const int mcoords[][2],
1297 const int mcoords_len,
1301 bool changed_multi =
false;
1322 if (changed_multi) {
1328 if (changed_multi) {
1336 bool changed =
false;
1359 BLI_assert(!
"lasso select on incorrect object type");
1366 changed_multi =
true;
1374 return changed_multi;
1398 if (changed_multi) {
1408 ot->
name =
"Lasso Select";
1410 ot->
idname =
"VIEW3D_OT_select_lasso";
1440 #define SEL_MENU_SIZE 22
1478 bool changed =
false;
1489 if (
STREQ(name, base->object->id.name + 2)) {
1496 if (basact ==
NULL) {
1506 else if (deselect) {
1512 if (basact == oldbasact) {
1528 if ((oldbasact != basact)) {
1553 ot->
name =
"Select Menu";
1555 ot->
idname =
"VIEW3D_OT_select_menu";
1584 short baseCount = 0;
1594 for (
int a = 0;
a < hits;
a++) {
1596 if (base->object->runtime.select_id == (
buffer[(4 *
a) + 3] & ~0xFFFF0000)) {
1603 const int dist = 15 *
U.pixelsize;
1605 const int delta_px[2] = {base->sx - mval[0], base->sy - mval[1]};
1623 if (baseCount == 0) {
1626 if (baseCount == 1) {
1641 const char *name = ob->
id.
name + 2;
1674 if (basact ==
NULL) {
1687 view_layer, v3d, basact->
object, pchan->
bone, extend, deselect, toggle);
1728 ot->
name =
"Select Menu";
1730 ot->
idname =
"VIEW3D_OT_bone_select_menu";
1752 const bool is_editmode,
1754 const bool deselect,
1759 short baseCount = 0;
1765 for (
int a = 0;
a < hits;
a++) {
1766 void *bone_ptr =
NULL;
1776 const uint hit_object = hitresult & 0xFFFF;
1780 if (base->object->runtime.select_id == hit_object) {
1815 const bool is_duplicate_bone =
BLI_gset_haskey(added_bones, bone_ptr);
1817 if (!is_duplicate_bone) {
1831 if (baseCount == 0) {
1834 if (baseCount == 1) {
1846 for (base_node = base_list.
list, bone_node = bone_list.
list, i = 0; bone_node;
1847 base_node = base_node->
next, bone_node = bone_node->
next, i++) {
1884 for (
uint i = 0; i < hits; i++) {
1885 if (
buffer[(4 * i) + 3] & 0xFFFF0000) {
1900 const int ofs = 4 * hits15;
1910 const int ofs = 4 * hits15 + 4 * hits9;
1928 bool do_nearest_xray_if_supported)
1931 int hits15, hits9 = 0, hits5 = 0;
1932 bool has_bones15 =
false, has_bones9 =
false, has_bones5 =
false;
1937 if (do_nearest_xray_if_supported) {
1952 else if (hits15 > 0) {
1964 else if (hits9 > 0) {
1975 else if (hits5 > 0) {
1984 else if (has_bones9) {
1988 else if (has_bones15) {
1997 else if (hits9 > 0) {
2020 static int last_mval[2] = {-100, -100};
2021 bool do_nearest =
false;
2041 *r_do_nearest = do_nearest;
2044 do_nearest = do_nearest && !enumerate;
2072 int selcol = 0, notcol = 0;
2076 for (
a = 0;
a < hits;
a++) {
2079 selcol =
buffer[4 *
a + 3] & 0xFFFF;
2086 notcol =
BASACT(view_layer)->object->runtime.select_id;
2089 for (
a = 0;
a < hits;
a++) {
2092 selcol =
buffer[4 *
a + 3] & 0xFFFF;
2122 if (base == startbase) {
2128 for (
a = 0;
a < hits;
a++) {
2131 if ((
buffer[4 *
a + 3] & 0xFFFF0000)) {
2153 if (base == startbase) {
2215 track = track->
next;
2218 object =
object->
next;
2247 bool retval =
false;
2249 const float mval_fl[2] = {(
float)mval[0], (
float)mval[1]};
2262 if (oldbasact && oldbasact->
next) {
2263 startbase = oldbasact->
next;
2285 if (base == oldbasact) {
2288 if (dist_temp < dist) {
2299 if (base == startbase) {
2305 if (is_obedit ==
false) {
2330 &vc,
buffer, mval, select_filter,
true, enumerate, &do_nearest);
2352 if (has_bones && basact) {
2353 if (basact->object->type ==
OB_CAMERA) {
2355 if (clip !=
NULL && oldbasact == basact) {
2356 bool changed =
false;
2358 for (
int i = 0; i < hits; i++) {
2359 int hitresult =
buffer[3 + (i * 4)];
2363 if (basact->object->runtime.select_id != (hitresult & 0xFFFF)) {
2370 if (
buffer[4 * i + 3] & 0xFFFF0000) {
2376 &clip->
tracking, hitresult >> 16, &tracksbase);
2448 if (basact == oldbasact) {
2454 if (is_obedit ==
false) {
2472 if (is_obedit ==
false) {
2473 if (oldbasact && basact) {
2474 if ((oldbasact->
object->
mode != basact->object->mode) &&
2475 (oldbasact->
object->
mode & basact->object->mode) == 0) {
2499 else if (deselect) {
2504 if (basact == oldbasact) {
2514 if (is_pose_mode ==
false || (basact->object->mode &
OB_MODE_POSE) == 0) {
2520 if ((oldbasact != basact) && (is_obedit ==
false)) {
2534 if (
ELEM(basact->object->mode,
2558 bContext *
C,
const int mval[2],
bool extend,
bool deselect,
bool toggle,
Object *obact)
2572 else if (deselect) {
2617 bool retval =
false;
2635 if (obedit &&
object ==
false) {
2638 if (!retval && deselect_all) {
2657 if (!retval && deselect_all) {
2666 if (!retval && deselect_all) {
2672 if (!retval && deselect_all) {
2678 if (!retval && deselect_all) {
2684 if (!retval && deselect_all) {
2694 if (!retval && deselect_all) {
2700 if (!retval && deselect_all) {
2706 if (!retval && deselect_all) {
2715 C, location, extend, deselect, toggle,
center, enumerate,
object);
2716 if (!retval && deselect_all) {
2778 "Use the object center when selecting, in edit mode used to extend object selection");
2781 ot->
srna,
"enumerate", 0,
"Enumerate",
"List objects under the mouse (object mode only)");
2825 r_data->
rect = rect;
2840 const float screen_co_a[2],
2841 const float screen_co_b[2])
2843 const float radius_squared = radius * radius;
2849 const float screen_co[2],
2853 const bool is_select =
mv->flag &
SELECT;
2856 if (sel_op_result != -1) {
2858 data->is_changed =
true;
2875 bool changed =
false;
2883 else if (use_zbuf) {
2887 esel = wm_userdata->
data;
2904 changed |=
data.is_changed;
2930 bool changed =
false;
2942 esel = wm_userdata->
data;
2962 bool handles_visible,
2963 const float screen_co[2])
2969 const bool is_select = bp->
f1 &
SELECT;
2971 if (sel_op_result != -1) {
2973 data->is_changed =
true;
2977 if (!handles_visible) {
2979 const bool is_select = bezt->
f2 &
SELECT;
2981 if (sel_op_result != -1) {
2983 data->is_changed =
true;
2985 bezt->
f1 = bezt->
f3 = bezt->
f2;
2988 uint8_t *flag_p = (&bezt->
f1) + beztindex;
2989 const bool is_select = *flag_p &
SELECT;
2991 if (sel_op_result != -1) {
2993 data->is_changed =
true;
3000 const bool deselect_all = (sel_op ==
SEL_OP_SET);
3024 return data.is_changed;
3030 const bool is_select = bp->
f1 &
SELECT;
3033 if (sel_op_result != -1) {
3035 data->is_changed =
true;
3052 return data.is_changed;
3057 const float screen_co[2],
3064 if (sel_op_result != -1) {
3066 data->is_changed =
true;
3075 void *userData,
BMEdge *eed,
const float screen_co_a[2],
const float screen_co_b[2],
int index)
3079 bool is_visible =
true;
3089 if (sel_op_result != -1) {
3091 data->is_done =
true;
3092 data->is_changed =
true;
3096 void *userData,
BMEdge *eed,
const float screen_co_a[2],
const float screen_co_b[2],
int index)
3100 bool is_visible =
true;
3109 if (sel_op_result != -1) {
3111 data->is_changed =
true;
3116 const float screen_co[2],
3123 if (sel_op_result != -1) {
3125 data->is_changed =
true;
3141 data.is_changed =
true;
3156 esel = wm_userdata->
data;
3186 if (
data.is_done ==
false) {
3203 if (
data.is_changed) {
3206 return data.is_changed;
3215 bool changed =
false;
3227 int metaelem_id = 0;
3228 for (ml = mb->
editelems->
first; ml; ml = ml->next, metaelem_id += 0x10000) {
3229 bool is_inside_radius =
false;
3230 bool is_inside_stiff =
false;
3232 for (
a = 0;
a < hits;
a++) {
3233 int hitresult =
buffer[(4 *
a) + 3];
3235 if (hitresult == -1) {
3239 const uint hit_object = hitresult & 0xFFFF;
3244 if (metaelem_id != (hitresult & 0xFFFF0000 & ~
MBALLSEL_ANY)) {
3249 is_inside_radius =
true;
3254 is_inside_stiff =
true;
3258 const int flag_prev = ml->flag;
3259 if (is_inside_radius) {
3262 if (is_inside_stiff) {
3266 const bool is_select = (ml->flag &
SELECT);
3267 const bool is_inside = is_inside_radius || is_inside_stiff;
3270 if (sel_op_result != -1) {
3273 changed |= (flag_prev != ml->flag);
3281 bool changed =
false;
3298 for (
uint base_index = 0; base_index < bases_len; base_index++) {
3307 for (
a = 0;
a < hits;
a++) {
3308 int select_id =
buffer[(4 *
a) + 3];
3309 if (select_id != -1) {
3310 if ((select_id & 0xFFFF0000) == 0) {
3316 bases, bases_len, select_id, &ebone);
3322 for (
uint base_index = 0; base_index < bases_len; base_index++) {
3345 #ifdef __BIG_ENDIAN__
3350 if (sel_a < sel_b) {
3353 if (sel_a > sel_b) {
3378 bool changed =
false;
3389 if ((base->object->runtime.select_id & 0x0000FFFF) != 0) {
3398 for (
const uint *
col = vbuffer + 3, *col_end =
col + (hits * 4);
col < col_end;
col += 4) {
3412 if (sel_op_result != -1) {
3420 if (bases !=
NULL) {
3461 for (
const uint *
col = vbuffer + 3, *col_end =
col + (hits * 4);
col < col_end;
col += 4) {
3470 for (;
col != col_end;
col += 4) {
3478 if (
col + 4 != col_end) {
3496 if (changed_multi) {
3501 if (bases !=
NULL) {
3506 return changed_multi;
3514 bool changed_multi =
false;
3532 bool changed =
false;
3574 BLI_assert(!
"box select on incorrect object type");
3577 changed_multi |= changed;
3593 if (changed_multi) {
3599 if (changed_multi) {
3607 if (changed_multi) {
3618 ot->
idname =
"VIEW3D_OT_select_box";
3678 const float screen_co[2],
3685 data->is_changed =
true;
3690 const float screen_co_a[2],
3691 const float screen_co_b[2],
3698 data->is_changed =
true;
3703 const float screen_co[2],
3710 data->is_changed =
true;
3724 bool changed =
false;
3790 changed |=
data.is_changed;
3808 bool changed =
false;
3837 const float screen_co[2],
3844 data->is_changed =
true;
3859 bool changed =
false;
3891 changed |=
data.is_changed;
3909 bool UNUSED(handles_visible),
3910 const float screen_co[2])
3919 if (beztindex == 0) {
3922 else if (beztindex == 1) {
3929 data->is_changed =
true;
3938 const bool deselect_all = (sel_op ==
SEL_OP_SET);
3962 return data.is_changed;
3971 data->is_changed =
true;
3991 return data.is_changed;
3997 const float screen_co[2])
4014 const float screen_co_a[2],
4015 const float screen_co_b[2])
4021 bool is_point_done =
false;
4022 int points_proj_tot = 0;
4028 is_point_done =
true;
4036 is_point_done =
true;
4047 if ((is_point_done ==
false) && (points_proj_tot == 2) &&
4055 data->is_changed =
true;
4058 data->is_changed |= is_point_done;
4081 if (
data.is_changed) {
4084 return data.is_changed;
4089 const float screen_co[2],
4117 const float screen_co_a[2],
4118 const float screen_co_b[2])
4124 bool is_point_done =
false;
4125 int points_proj_tot = 0;
4131 is_point_done =
true;
4139 is_point_done =
true;
4150 if ((is_point_done ==
false) && (points_proj_tot == 2) &&
4158 data->is_changed =
true;
4161 data->is_changed |= is_point_done;
4185 if (
data.is_changed) {
4190 return data.is_changed;
4195 const float screen_co[2])
4206 data->is_changed =
true;
4228 return data.is_changed;
4241 bool changed =
false;
4284 const float radius_squared = rad * rad;
4285 const float mval_fl[2] = {mval[0], mval[1]};
4287 bool changed =
false;
4295 for (base =
FIRSTBASE(view_layer); base; base = base->
next) {
4335 if (obedit ==
NULL) {
4383 if (wm_userdata == &wm_userdata_buf) {
4399 ot->
name =
"Circle Select";
4401 ot->
idname =
"VIEW3D_OT_select_circle";
typedef float(TangentPoint)[2]
#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)
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_BITMAP_TEST_BOOL(_bitmap, _index)
BLI_INLINE void BLI_endian_switch_uint32(unsigned int *val) ATTR_NONNULL(1)
GSet * BLI_gset_ptr_new(const char *info)
void BLI_gset_insert(GSet *gs, void *key)
bool BLI_gset_haskey(GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
void BLI_lasso_boundbox(struct rcti *rect, const int mcoords[][2], const unsigned int mcoords_len)
bool BLI_lasso_is_edge_inside(const int mcoords[][2], const unsigned int mcoords_len, int x0, int y0, int x1, int y1, const int error_value)
bool BLI_lasso_is_point_inside(const int mcoords[][2], const unsigned int mcoords_len, const int sx, const int sy, const 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 int len_manhattan_v2v2_int(const int a[2], const int b[2]) ATTR_WARN_UNUSED_RESULT
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_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
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, const int x, const int y)
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, const 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 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_poly(struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, const int poly[][2], const int poly_len, 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], const int radius, uint *r_bitmap_len)
void DRW_select_buffer_context_create(struct Base **bases, const uint bases_len, short select_mode)
#define EBONE_VISIBLE(arm, ebone)
#define EBONE_SELECTABLE(arm, ebone)
bool ED_lattice_deselect_all_multi(struct bContext *C)
bool ED_lattice_select_pick(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
bool ED_lattice_flags_set(struct Object *obedit, int flag)
bool ED_mball_select_pick(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
bool ED_mball_deselect_all_multi(struct bContext *C)
bool paintvert_deselect_all_visible(struct Object *ob, int action, bool flush_flags)
#define ED_MESH_PICK_DEFAULT_VERT_DIST
bool paintface_deselect_all_visible(struct bContext *C, struct Object *ob, int action, bool flush_flags)
bool paintface_mouse_select(struct bContext *C, struct Object *ob, const int mval[2], bool extend, bool deselect, bool toggle)
void paintface_flush_flags(struct bContext *C, struct Object *ob, short flag)
void paintvert_flush_flags(struct Object *ob)
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 EDBM_flag_disable_all(struct BMEditMesh *em, const char hflag)
bool EDBM_mesh_deselect_all_multi(struct bContext *C)
void paintvert_tag_select_update(struct bContext *C, struct Object *ob)
bool EDBM_select_pick(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
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)
bool ED_object_base_deselect_all(struct ViewLayer *view_layer, struct View3D *v3d, int action)
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)
bool PE_box_select(struct bContext *C, const struct rcti *rect, const int sel_op)
bool PE_mouse_particles(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
int PE_lasso_select(struct bContext *C, const int mcoords[][2], const int mcoords_len, const int sel_op)
bool PE_deselect_all_visible(struct bContext *C)
bool PE_circle_select(struct bContext *C, const int sel_op, const int mval[2], float rad)
bool ED_operator_view3d_active(struct bContext *C)
bool ED_operator_region_view3d_active(struct bContext *C)
#define SEL_OP_USE_PRE_DESELECT(sel_op)
#define SEL_OP_CAN_DESELECT(sel_op)
eSelectOp ED_select_op_modal(const eSelectOp sel_op, const bool is_first)
int ED_select_op_action_deselected(const eSelectOp sel_op, const bool is_select, const bool is_inside)
#define SEL_OP_USE_OUTSIDE(sel_op)
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, const eV3DProjTest clip_flag)
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)
#define XRAY_ENABLED(v3d)
void view3d_opengl_select_cache_end(void)
eV3DProjStatus ED_view3d_project_base(const struct ARegion *region, struct Base *base)
void ED_view3d_init_mats_rv3d(struct Object *ob, struct RegionView3D *rv3d)
void mball_foreachScreenElem(struct ViewContext *vc, void(*func)(void *userData, struct MetaElem *ml, const float screen_co[2]), void *userData, const eV3DProjTest clip_flag)
@ V3D_PROJ_TEST_CLIP_NEAR
void meshobject_foreachScreenVert(struct ViewContext *vc, void(*func)(void *userData, struct MVert *eve, const float screen_co[2], int index), void *userData, const 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, const 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, const eV3DProjTest clip_flag)
void view3d_opengl_select_cache_begin(void)
#define V3D_PROJ_TEST_CLIP_DEFAULT
@ VIEW3D_SELECT_PICK_NEAREST
int view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, const struct rcti *input, eV3DSelectMode select_mode, eV3DSelectObjectFilter select_filter)
eV3DSelectObjectFilter ED_view3d_select_filter_from_mode(const struct Scene *scene, const struct Object *obact)
#define XRAY_FLAG_ENABLED(v3d)
void lattice_foreachScreenVert(struct ViewContext *vc, void(*func)(void *userData, struct BPoint *bp, const float screen_co[2]), void *userData, const eV3DProjTest clip_flag)
void view3d_operator_needs_opengl(const struct bContext *C)
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)
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, const eV3DProjTest clip_flag)
eV3DProjStatus ED_view3d_project_float_global(const struct ARegion *region, const float co[3], float r_co[2], const eV3DProjTest flag)
@ VIEW3D_SELECT_FILTER_NOP
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)
#define WM_EVENT_CURSOR_MOTION_THRESHOLD
bool ED_armature_edit_deselect_all_visible(Object *obedit)
Base * ED_armature_base_and_ebone_from_select_buffer(Base **bases, uint bases_len, int hit, EditBone **r_ebone)
Base * ED_armature_base_and_pchan_from_select_buffer(Base **bases, uint bases_len, int hit, bPoseChannel **r_pchan)
Base * ED_armature_base_and_bone_from_select_buffer(Base **bases, uint bases_len, int hit, Bone **r_bone)
bool ED_armature_edit_deselect_all_visible_multi(bContext *C)
bool ED_armature_edit_select_op_from_tagged(bArmature *arm, const int sel_op)
bool ED_armature_edit_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
bool ED_armature_edit_select_pick_bone(bContext *C, Base *basact, EditBone *ebone, const int selmask, const bool extend, const bool deselect, const bool toggle)
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)
#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_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.
ATTR_WARN_UNUSED_RESULT const BMVert * v2
const Depsgraph * depsgraph
bool ED_curve_editnurb_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
bool ED_curve_deselect_all_multi(struct bContext *C)
bool ED_curve_editfont_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
static bool is_inside(int x, int y, int cols, int rows)
void ED_gpencil_toggle_brush_cursor(bContext *C, bool enable, void *customdata)
__kernel void ccl_constant KernelData ccl_global void ccl_global char ccl_global int ccl_global char ccl_global unsigned int 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 void area(int d1, int d2, int e1, int e2, float weights[2])
static bool do_lasso_select_node(bContext *C, const int mcoords[][2], const int mcoords_len, eSelectOp sel_op)
Object * ED_pose_object_from_context(bContext *C)
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_pose_deselect_all_multi(bContext *C, int select_mode, const bool ignore_visibility)
void ED_armature_pose_select_pick_bone(ViewLayer *view_layer, View3D *v3d, Object *ob, Bone *bone, const bool extend, const bool deselect, const bool toggle)
bool ED_armature_pose_select_pick_with_buffer(ViewLayer *view_layer, View3D *v3d, Base *base, const uint *buffer, short hits, bool extend, bool deselect, bool toggle, 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 MovieTrackingTrack * next
struct ToolSettings * toolsettings
struct bNodeTree * edittree
struct Depsgraph * depsgraph
struct ViewLayer * view_layer
struct RegionView3D * rv3d
void(* free_fn)(void *data)
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
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
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 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 bool armature_circle_doSelectJoint(void *userData, EditBone *ebone, const float screen_co[2], bool head)
static bool selectbuffer_has_bones(const uint *buffer, const uint hits)
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 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 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 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 int mixed_bones_object_selectbuffer_extended(ViewContext *vc, uint *buffer, const int mval[2], eV3DSelectObjectFilter select_filter, bool use_cycle, bool enumerate, bool *r_do_nearest)
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 int selectbuffer_ret_hits_9(uint *buffer, const int hits15, const int hits9)
static bool edge_inside_rect(const rctf *rect, const float v1[2], const float v2[2])
static int mixed_bones_object_selectbuffer(ViewContext *vc, uint *buffer, const int mval[2], eV3DSelectObjectFilter select_filter, bool do_nearest, bool do_nearest_xray_if_supported)
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 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 Base * object_mouse_select_menu(bContext *C, ViewContext *vc, const uint *buffer, int hits, const int mval[2], bool extend, bool deselect, bool toggle)
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 Base * mouse_select_eval_buffer(ViewContext *vc, const uint *buffer, int hits, Base *startbase, bool has_bones, bool do_nearest)
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_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 bool do_pose_tag_select_op_exec(Base **bases, const uint bases_len, const eSelectOp sel_op)
static void paint_vertsel_circle_select_doSelectVert(void *userData, MVert *mv, const float screen_co[2], int UNUSED(index))
static bool bone_mouse_select_menu(bContext *C, const uint *buffer, const int hits, const bool is_editmode, const bool extend, const bool deselect, const bool toggle)
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)
static bool ed_object_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle, bool obcenter, bool enumerate, bool object)
struct CircleSelectUserData CircleSelectUserData
static bool pose_circle_select(ViewContext *vc, const eSelectOp sel_op, const int mval[2], float rad)
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 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)
static bool ed_wpaint_vertex_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle, Object *obact)
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 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 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)
struct LassoSelectUserData LassoSelectUserData
static bool mesh_circle_select(ViewContext *vc, wmGenericUserData *wm_userdata, eSelectOp sel_op, const int mval[2], float rad)
static int selectbuffer_ret_hits_15(uint *UNUSED(buffer), const int hits15)
static int selectbuffer_ret_hits_5(uint *buffer, const int hits15, const int hits9, const int hits5)
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 view3d_selectable_data(bContext *C)
static int bone_select_menu_exec(bContext *C, wmOperator *op)
static int view3d_select_exec(bContext *C, wmOperator *op)
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, short context, PointerRNA *properties)
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)
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)