82 if ((bp->
hide == 0) || (hidden == 1)) {
116 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
126 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
143 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
153 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
165 bool changed =
false;
169 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
170 if (bezt->
hide == 0) {
180 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
194 bool changed =
false;
203 bool changed =
false;
207 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
216 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
251 bool changed =
false;
260 bool changed_multi =
false;
261 for (
uint base_index = 0; base_index < bases_len; base_index++) {
267 return changed_multi;
280 return changed_multi;
288 bool changed =
false;
295 if (bezt->
hide == 0) {
308 a = nu->pntsu * nu->pntsv;
329 const bool selstatus)
334 bool lastsel =
false;
346 bezt = &nu->bezt[
a - 1];
352 if ((lastsel ==
false) && (bezt->
hide == 0) &&
371 a = nu->pntsu * nu->pntsv;
380 if ((lastsel ==
false) && (bp->
hide == 0) &&
416 if (obedit ==
NULL) {
428 if (selfirst ==
LAST) {
429 bezt = &nu->bezt[
a - 1];
450 a = nu->pntsu * nu->pntsv;
453 if (selfirst ==
LAST) {
482 uint objects_len = 0;
486 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
487 Object *obedit = objects[ob_index];
500 ot->
name =
"(De)select First";
501 ot->
idname =
"CURVE_OT_de_select_first";
502 ot->
description =
"(De)select first of visible part of each NURBS";
515 uint objects_len = 0;
519 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
520 Object *obedit = objects[ob_index];
534 ot->
name =
"(De)select Last";
535 ot->
idname =
"CURVE_OT_de_select_last";
536 ot->
description =
"(De)select last of visible part of each NURBS";
552 uint objects_len = 0;
557 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
558 Object *obedit = objects[ob_index];
568 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
569 Object *obedit = objects[ob_index];
571 bool changed =
false;
600 ot->
name =
"(De)select All";
622 uint objects_len = 0;
625 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
626 Object *obedit = objects[ob_index];
630 bool changed =
false;
656 ot->
name =
"Select Linked All";
657 ot->
idname =
"CURVE_OT_select_linked";
658 ot->
description =
"Select all control points linked to the current selection";
724 ot->
name =
"Select Linked";
725 ot->
idname =
"CURVE_OT_select_linked_pick";
726 ot->
description =
"Select all control points linked to already selected ones";
740 "Deselect linked control points rather than selecting them");
751 static int direction = 0;
754 int u = 0,
v = 0,
a, b;
761 direction = 1 - direction;
770 for (b = 0; b < nu->
pntsu; b++, bp++) {
793 ot->
name =
"Select Control Point Row";
795 ot->
description =
"Select a row of control points including active one";
810 uint objects_len = 0;
814 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
815 Object *obedit = objects[ob_index];
831 ot->
idname =
"CURVE_OT_select_next";
832 ot->
description =
"Select control points following already selected ones along the curves";
847 uint objects_len = 0;
851 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
852 Object *obedit = objects[ob_index];
867 ot->
name =
"Select Previous";
868 ot->
idname =
"CURVE_OT_select_previous";
869 ot->
description =
"Select control points preceding already selected ones along the curves";
895 a = nu->pntsu * nu->pntsv;
901 if (
a % nu->pntsu != 0) {
909 if (
a - nu->pntsu > 0) {
911 tempbp = bp + nu->pntsu;
922 if (
a + nu->pntsu < nu->pntsu * nu->pntsv) {
923 tempbp = bp - nu->pntsu;
930 if (
a % nu->pntsu != 1) {
959 uint objects_len = 0;
962 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
963 Object *obedit = objects[ob_index];
976 ot->
idname =
"CURVE_OT_select_more";
977 ot->
description =
"Select control points at the boundary of each selection region";
997 bool lastsel =
false;
1002 a = nu->pntsu * nu->pntsv;
1011 if ((
a + 1) % nu->pntsu == 0) {
1022 if ((
a + 1) % nu->pntsu == 1) {
1033 if (
a + 1 > nu->pntsu * nu->pntsv - nu->pntsu) {
1045 if (a < nu->pntsu) {
1080 sel = (lastsel == 1);
1084 if (
a == nu->pntsu - 1) {
1122 a = nu->pntsu * nu->pntsv;
1125 if ((lastsel ==
false) && (bp->
hide == 0) && (bp->
f1 &
SELECT)) {
1129 if (
a == nu->pntsu * nu->pntsv - 1) {
1173 uint objects_len = 0;
1176 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1177 Object *obedit = objects[ob_index];
1189 ot->
name =
"Select Less";
1190 ot->
idname =
"CURVE_OT_select_less";
1191 ot->
description =
"Deselect control points at the boundary of each selection region";
1226 a = nu->pntsu * nu->pntsv;
1249 uint objects_len = 0;
1253 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1254 Object *obedit = objects[ob_index];
1256 int seed_iter =
seed;
1277 ot->
name =
"Select Random";
1278 ot->
idname =
"CURVE_OT_select_random";
1298 start = bezt - nu->
bezt;
1300 bezt = &nu->
bezt[
a - 1];
1303 const int depth =
abs(start -
a);
1314 int a, startrow, startpnt;
1317 startrow = (bp - nu->
bp) / nu->
pntsu;
1318 startpnt = (bp - nu->
bp) % nu->
pntsu;
1321 bp = &nu->
bp[
a - 1];
1322 row = nu->
pntsv - 1;
1323 pnt = nu->
pntsu - 1;
1326 const int depth =
abs(pnt - startpnt) +
abs(row - startrow);
1333 pnt = nu->
pntsu - 1;
1365 bool changed =
false;
1370 uint objects_len = 0;
1373 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1374 Object *obedit = objects[ob_index];
1395 (objects_len == 1 ?
"Surface has no active point" :
"Surfaces have no active point"));
1400 (objects_len == 1 ?
"Curve has no active point" :
"Curves have no active point"));
1410 ot->
name =
"Checker Deselect";
1411 ot->
description =
"Deselect every Nth point starting from the active one";
1412 ot->
idname =
"CURVE_OT_select_nth";
1473 Object *ob,
Nurb *nu,
const int type, KDTree_1d *tree_1d, KDTree_3d *tree_3d)
1475 float tree_entry[3] = {0.0f, 0.0f, 0.0f};
1482 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
1487 float radius_ref = bezt->
radius;
1488 tree_entry[0] = radius_ref;
1492 float weight_ref = bezt->
weight;
1493 tree_entry[0] = weight_ref;
1502 BLI_kdtree_1d_insert(tree_1d, tree_index++, tree_entry);
1505 BLI_kdtree_3d_insert(tree_3d, tree_index++, tree_entry);
1515 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
1519 float radius_ref = bp->
radius;
1520 tree_entry[0] = radius_ref;
1524 float weight_ref = bp->
weight;
1525 tree_entry[0] = weight_ref;
1534 BLI_kdtree_1d_insert(tree_1d, tree_index++, tree_entry);
1537 BLI_kdtree_3d_insert(tree_3d, tree_index++, tree_entry);
1547 const KDTree_1d *tree_1d,
1548 const KDTree_3d *tree_3d,
1552 const float thresh_cos =
cosf(thresh * (
float)
M_PI_2);
1553 bool changed =
false;
1559 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
1565 float radius_ref = bezt->
radius;
1572 float weight_ref = bezt->
weight;
1581 KDTreeNearest_3d nearest;
1582 if (BLI_kdtree_3d_find_nearest(tree_3d, dir, &nearest) != -1) {
1584 float delta = thresh_cos -
fabsf(
cosf(orient));
1604 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
1610 float radius_ref = bp->
radius;
1617 float weight_ref = bp->
weight;
1626 KDTreeNearest_3d nearest;
1627 if (BLI_kdtree_3d_find_nearest(tree_3d, dir, &nearest) != -1) {
1629 float delta =
fabsf(
cosf(orient)) - thresh_cos;
1657 int tot_nurbs_selected_all = 0;
1658 uint objects_len = 0;
1662 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1663 Object *obedit = objects[ob_index];
1668 if (tot_nurbs_selected_all == 0) {
1674 KDTree_1d *tree_1d =
NULL;
1675 KDTree_3d *tree_3d =
NULL;
1681 tree_1d = BLI_kdtree_1d_new(tot_nurbs_selected_all);
1684 tree_3d = BLI_kdtree_3d_new(tot_nurbs_selected_all);
1689 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1690 Object *obedit = objects[ob_index];
1700 type_ref |= nu->type;
1712 if (tree_1d !=
NULL) {
1713 BLI_kdtree_1d_deduplicate(tree_1d);
1714 BLI_kdtree_1d_balance(tree_1d);
1716 if (tree_3d !=
NULL) {
1717 BLI_kdtree_3d_deduplicate(tree_3d);
1718 BLI_kdtree_3d_balance(tree_3d);
1722 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1723 Object *obedit = objects[ob_index];
1726 bool changed =
false;
1731 if (nu->type & type_ref) {
1740 obedit, nu, optype, tree_1d, tree_3d, thresh, compare);
1753 if (tree_1d !=
NULL) {
1754 BLI_kdtree_1d_free(tree_1d);
1756 if (tree_3d !=
NULL) {
1757 BLI_kdtree_3d_free(tree_3d);
1765 ot->
name =
"Select Similar";
1766 ot->
idname =
"CURVE_OT_select_similar";
1767 ot->
description =
"Select similar curve points by property type";
1792 const float *a_fl, *b_fl;
1800 b_fl = nu->
bp[b].
vec;
1808 const int u = nu->
pntsu;
1815 i = (i_prev + 1) % u;
1820 if (i == vert_dst) {
1830 const int u = nu->
pntsu;
1833 if (vert_src > vert_dst) {
1834 SWAP(
int, vert_src, vert_dst);
1840 SWAP(
int, vert_src, vert_dst);
1853 if (i == vert_dst) {
1862 int totu = nu->
pntsu;
1863 int totv = nu->
pntsv;
1864 int vert_num = totu * totv;
1868 int vert, vert_prev;
1874 for (
int i = 0; i < vert_num; i++) {
1876 data[i].vert_prev = -1;
1877 data[i].cost = FLT_MAX;
1883 int vert_curr =
data[vert_src].vert;
1885 data[vert_src].cost = 0.0f;
1886 data[vert_src].vert_prev = vert_src;
1890 if (vert_curr == vert_dst) {
1899 for (
int axis = 0; axis != 2; axis += 1) {
1900 int uv_other[2] = {u,
v};
1903 uv_other[axis] +=
sign;
1906 if (vert_other != -1) {
1907 const float dist =
data[vert_curr].cost +
1910 if (
data[vert_other].cost > dist) {
1911 data[vert_other].cost = dist;
1912 if (
data[vert_other].vert_prev == -1) {
1915 data[vert_other].vert_prev = vert_curr;
1924 if (vert_curr == vert_dst) {
1926 while (vert_curr != vert_src && i++ < vert_num) {
1933 vert_curr =
data[vert_curr].vert_prev;
1969 if (nu_src != nu_dst) {
1974 vert_dst_p = bezt_dst ? (
void *)bezt_dst : (
void *)bp_dst;
1976 if (vert_src == vert_dst) {
2001 ot->
name =
"Pick Shortest Path";
2002 ot->
idname =
"CURVE_OT_shortest_path_pick";
2003 ot->
description =
"Select shortest path between two selections";
struct Object * CTX_data_edit_object(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
struct View3D * CTX_wm_view3d(const bContext *C)
bool BKE_curve_nurb_vert_active_get(struct Curve *cu, struct Nurb **r_nu, void **r_vert)
void BKE_nurb_index_to_uv(struct Nurb *nu, int index, int *r_u, int *r_v)
void BKE_curve_nurb_vert_active_set(struct Curve *cu, const struct Nurb *nu, const void *vert)
int BKE_nurb_index_from_uv(struct Nurb *nu, int u, int v)
int BKE_curve_nurb_vert_index_get(const struct Nurb *nu, const void *vert)
void BKE_curve_nurb_vert_active_validate(struct Curve *cu)
void BKE_nurb_bpoint_calc_normal(struct Nurb *nu, struct BPoint *bp, float r_normal[3])
void BKE_nurb_bezt_calc_normal(struct Nurb *nu, struct BezTriple *bezt, float r_normal[3])
struct Nurb * BKE_curve_nurb_active_get(struct Curve *cu)
void BKE_nurbList_flag_set(ListBase *editnurb, uint8_t flag, bool set)
#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, r_len)
#define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, v3d, r_len)
void BKE_report(ReportList *reports, ReportType type, const char *message)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
#define BLI_BITMAP_NEW(_tot, _alloc_string)
unsigned int BLI_ghashutil_strhash_p(const void *ptr)
A min-heap / priority queue ADT.
void BLI_heapsimple_free(HeapSimple *heap, HeapSimpleFreeFP ptrfreefp) ATTR_NONNULL(1)
HeapSimple * BLI_heapsimple_new(void) ATTR_WARN_UNUSED_RESULT
void * BLI_heapsimple_pop_min(HeapSimple *heap) ATTR_NONNULL(1)
bool BLI_heapsimple_is_empty(const HeapSimple *heap) ATTR_NONNULL(1)
void BLI_heapsimple_insert(HeapSimple *heap, float value, void *ptr) ATTR_NONNULL(1)
A kd-tree for nearest neighbor search.
#define LISTBASE_FOREACH(type, var, list)
void mul_m3_v3(const float M[3][3], float r[3])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v3(float r[3])
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
float angle_normalized_v3v3(const float v1[3], const float v2[3]) ATTR_WARN_UNUSED_RESULT
void BLI_rng_free(struct RNG *rng) ATTR_NONNULL(1)
struct RNG * BLI_rng_new_srandom(unsigned int seed)
float BLI_rng_get_float(struct RNG *rng) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
@ ID_RECALC_COPY_ON_WRITE
#define BEZT_ISSEL_ANY_HIDDENHANDLES(v3d, bezt)
#define BEZT_SEL_ALL(bezt)
#define BEZT_ISSEL_ANY(bezt)
#define BEZT_DESEL_ALL(bezt)
#define BEZT_ISSEL_ALL(bezt)
Object is a sort of wrapper for general info.
void ED_object_base_activate(struct bContext *C, struct Base *base)
bool ED_operator_editsurfcurve(struct bContext *C)
bool ED_operator_editcurve(struct bContext *C)
bool ED_operator_editsurfcurve_region_view3d(struct bContext *C)
bool ED_operator_editsurf(struct bContext *C)
int ED_select_similar_compare_float(const float delta, const float thresh, const int compare)
bool ED_select_similar_compare_float_tree(const struct KDTree_1d *tree, const float length, const float thresh, const int compare)
void ED_view3d_viewcontext_init(struct bContext *C, struct ViewContext *vc, struct Depsgraph *depsgraph)
void ED_view3d_viewcontext_init_object(struct ViewContext *vc, struct Object *obact)
void view3d_operator_needs_opengl(const struct bContext *C)
_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 type
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMVert * v
static unsigned long seed
bool ED_curve_pick_vert(struct ViewContext *vc, short sel, struct Nurb **r_nurb, struct BezTriple **r_bezt, struct BPoint **r_bp, short *r_handle, struct Base **r_base)
const Depsgraph * depsgraph
ListBase * object_editcurve_get(Object *ob)
void CURVE_OT_select_random(wmOperatorType *ot)
bool select_bpoint(BPoint *bp, bool selstatus, uint8_t flag, bool hidden)
static bool ed_curve_select_nth(Curve *cu, const struct CheckerIntervalParams *params)
bool select_beztriple(BezTriple *bezt, bool selstatus, uint8_t flag, eVisible_Types hidden)
void CURVE_OT_select_less(wmOperatorType *ot)
void CURVE_OT_select_similar(wmOperatorType *ot)
static void curve_select_more(Object *obedit)
static void curve_nurb_selected_type_get(Object *ob, Nurb *nu, const int type, KDTree_1d *tree_1d, KDTree_3d *tree_3d)
bool ED_curve_select_all(EditNurb *editnurb)
void CURVE_OT_select_previous(wmOperatorType *ot)
static const EnumPropertyItem curve_prop_similar_types[]
static void nurb_bezt_direction_worldspace_get(Object *ob, Nurb *nu, BezTriple *bezt, float r_dir[3])
static const EnumPropertyItem curve_prop_similar_compare_types[]
static int select_linked_pick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_curve_select_check(View3D *v3d, struct EditNurb *editnurb)
void CURVE_OT_shortest_path_pick(wmOperatorType *ot)
void CURVE_OT_select_linked(wmOperatorType *ot)
bool ED_curve_deselect_all_multi_ex(Base **bases, int bases_len)
bool ED_curve_nurb_deselect_all(const Nurb *nu)
static void selectend_nurb(Object *obedit, eEndPoint_Types selfirst, bool doswap, bool selstatus)
static int select_next_exec(bContext *C, wmOperator *UNUSED(op))
static void select_adjacent_cp(ListBase *editnurb, short next, const bool cont, const bool selstatus)
bool ED_curve_select_swap(EditNurb *editnurb, bool hide_handles)
static void curve_select_less(Object *obedit)
static int curve_select_random_exec(bContext *C, wmOperator *op)
void CURVE_OT_select_next(wmOperatorType *ot)
bool ED_curve_deselect_all_multi(struct bContext *C)
bool ED_curve_nurb_select_check(View3D *v3d, Nurb *nu)
static int edcu_shortest_path_pick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int select_row_exec(bContext *C, wmOperator *UNUSED(op))
static void select_nth_bp(Nurb *nu, BPoint *bp, const struct CheckerIntervalParams *params)
static bool curve_nurb_select_similar_type(Object *ob, Nurb *nu, const int type, const KDTree_1d *tree_1d, const KDTree_3d *tree_3d, const float thresh, const int compare)
static bool swap_selection_bpoint(BPoint *bp)
static int curve_select_more_exec(bContext *C, wmOperator *UNUSED(op))
bool ED_curve_nurb_select_all(const Nurb *nu)
static int select_nth_exec(bContext *C, wmOperator *op)
static void curve_select_random(ListBase *editnurb, float randfac, int seed, bool select)
int ED_curve_nurb_select_count(View3D *v3d, Nurb *nu)
static int de_select_last_exec(bContext *C, wmOperator *UNUSED(op))
void CURVE_OT_select_all(wmOperatorType *ot)
static int curve_select_less_exec(bContext *C, wmOperator *UNUSED(op))
static int select_linked_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static void select_nth_bezt(Nurb *nu, BezTriple *bezt, const struct CheckerIntervalParams *params)
static int de_select_first_exec(bContext *C, wmOperator *UNUSED(op))
bool ED_curve_deselect_all(EditNurb *editnurb)
static bool swap_selection_beztriple(BezTriple *bezt)
void CURVE_OT_select_nth(wmOperatorType *ot)
int ED_curve_select_count(View3D *v3d, struct EditNurb *editnurb)
void CURVE_OT_de_select_first(wmOperatorType *ot)
static int curve_select_similar_exec(bContext *C, wmOperator *op)
void CURVE_OT_select_more(wmOperatorType *ot)
static void nurb_bpoint_direction_worldspace_get(Object *ob, Nurb *nu, BPoint *bp, float r_dir[3])
void CURVE_OT_select_row(wmOperatorType *ot)
void CURVE_OT_de_select_last(wmOperatorType *ot)
static float curve_calc_dist_span(Nurb *nu, int vert_src, int vert_dst)
static int select_previous_exec(bContext *C, wmOperator *UNUSED(op))
static int select_linked_exec(bContext *C, wmOperator *UNUSED(op))
void CURVE_OT_select_linked_pick(wmOperatorType *ot)
static void curve_select_shortest_path_curve(Nurb *nu, int vert_src, int vert_dst)
static void curve_select_shortest_path_surf(Nurb *nu, int vert_src, int vert_dst)
static float curve_calc_dist_pair(const Nurb *nu, int a, int b)
static int de_select_all_exec(bContext *C, wmOperator *op)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
float RNA_float_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_float(StructOrFunctionRNA *cont_, const char *identifier, float default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
struct ViewLayer * view_layer
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
__forceinline const avxi abs(const avxi &a)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_operator_properties_select_random_seed_increment_get(wmOperator *op)
bool WM_operator_properties_checker_interval_test(const struct CheckerIntervalParams *op_params, int depth)
void WM_operator_properties_select_random(wmOperatorType *ot)
void WM_operator_properties_select_all(wmOperatorType *ot)
void WM_operator_properties_checker_interval_from_op(struct wmOperator *op, struct CheckerIntervalParams *op_params)
void WM_operator_properties_checker_interval(wmOperatorType *ot, bool nth_can_disable)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))