68 if ((bp->
hide == 0) || (hidden == 1)) {
102 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
112 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
129 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
139 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
151 bool changed =
false;
155 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
156 if (bezt->
hide == 0) {
166 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
180 bool changed =
false;
189 bool changed =
false;
193 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
202 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
237 bool changed =
false;
246 bool changed_multi =
false;
247 for (
uint base_index = 0; base_index < bases_len; base_index++) {
253 return changed_multi;
266 return changed_multi;
274 bool changed =
false;
281 if (bezt->
hide == 0) {
294 a = nu->pntsu * nu->pntsv;
315 const bool selstatus)
320 bool lastsel =
false;
332 bezt = &nu->bezt[
a - 1];
338 if ((lastsel ==
false) && (bezt->
hide == 0) &&
357 a = nu->pntsu * nu->pntsv;
366 if ((lastsel ==
false) && (bp->
hide == 0) &&
408 if (obedit ==
NULL) {
420 if (selfirst ==
LAST) {
421 bezt = &nu->bezt[
a - 1];
442 a = nu->pntsu * nu->pntsv;
445 if (selfirst ==
LAST) {
474 uint objects_len = 0;
478 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
479 Object *obedit = objects[ob_index];
492 ot->
name =
"(De)select First";
493 ot->
idname =
"CURVE_OT_de_select_first";
494 ot->
description =
"(De)select first of visible part of each NURBS";
507 uint objects_len = 0;
511 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
512 Object *obedit = objects[ob_index];
526 ot->
name =
"(De)select Last";
527 ot->
idname =
"CURVE_OT_de_select_last";
528 ot->
description =
"(De)select last of visible part of each NURBS";
550 uint objects_len = 0;
555 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
556 Object *obedit = objects[ob_index];
566 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
567 Object *obedit = objects[ob_index];
569 bool changed =
false;
598 ot->
name =
"(De)select All";
624 uint objects_len = 0;
627 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
628 Object *obedit = objects[ob_index];
632 bool changed =
false;
658 ot->
name =
"Select Linked All";
659 ot->
idname =
"CURVE_OT_select_linked";
660 ot->
description =
"Select all control points linked to the current selection";
730 ot->
name =
"Select Linked";
731 ot->
idname =
"CURVE_OT_select_linked_pick";
732 ot->
description =
"Select all control points linked to already selected ones";
746 "Deselect linked control points rather than selecting them");
761 static int direction = 0;
764 int u = 0,
v = 0,
a,
b;
771 direction = 1 - direction;
780 for (
b = 0;
b < nu->
pntsu;
b++, bp++) {
803 ot->
name =
"Select Control Point Row";
805 ot->
description =
"Select a row of control points including active one";
824 uint objects_len = 0;
828 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
829 Object *obedit = objects[ob_index];
845 ot->
idname =
"CURVE_OT_select_next";
846 ot->
description =
"Select control points following already selected ones along the curves";
865 uint objects_len = 0;
869 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
870 Object *obedit = objects[ob_index];
885 ot->
name =
"Select Previous";
886 ot->
idname =
"CURVE_OT_select_previous";
887 ot->
description =
"Select control points preceding already selected ones along the curves";
917 a = nu->pntsu * nu->pntsv;
923 if (
a % nu->pntsu != 0) {
931 if (
a - nu->pntsu > 0) {
933 tempbp = bp + nu->pntsu;
944 if (
a + nu->pntsu < nu->pntsu * nu->pntsv) {
945 tempbp = bp - nu->pntsu;
952 if (
a % nu->pntsu != 1) {
981 uint objects_len = 0;
984 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
985 Object *obedit = objects[ob_index];
998 ot->
idname =
"CURVE_OT_select_more";
999 ot->
description =
"Select control points at the boundary of each selection region";
1023 bool lastsel =
false;
1028 a = nu->pntsu * nu->pntsv;
1037 if ((
a + 1) % nu->pntsu == 0) {
1048 if ((
a + 1) % nu->pntsu == 1) {
1059 if (
a + 1 > nu->pntsu * nu->pntsv - nu->pntsu) {
1071 if (a < nu->pntsu) {
1106 sel = (lastsel == 1);
1110 if (
a == nu->pntsu - 1) {
1148 a = nu->pntsu * nu->pntsv;
1151 if ((lastsel ==
false) && (bp->
hide == 0) && (bp->
f1 &
SELECT)) {
1155 if (
a == nu->pntsu * nu->pntsv - 1) {
1199 uint objects_len = 0;
1202 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1203 Object *obedit = objects[ob_index];
1215 ot->
name =
"Select Less";
1216 ot->
idname =
"CURVE_OT_select_less";
1217 ot->
description =
"Deselect control points at the boundary of each selection region";
1240 uint objects_len = 0;
1244 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1245 Object *obedit = objects[ob_index];
1247 int seed_iter =
seed;
1267 int a = nu->pntsu * nu->pntsv;
1279 const int count_select = totvert * randfac;
1280 for (
int i = 0; i < count_select; i++) {
1302 int a = nu->pntsu * nu->pntsv;
1330 ot->
name =
"Select Random";
1331 ot->
idname =
"CURVE_OT_select_random";
1355 start = bezt - nu->
bezt;
1357 bezt = &nu->
bezt[
a - 1];
1360 const int depth =
abs(start -
a);
1371 int a, startrow, startpnt;
1374 startrow = (bp - nu->
bp) / nu->
pntsu;
1375 startpnt = (bp - nu->
bp) % nu->
pntsu;
1378 bp = &nu->
bp[
a - 1];
1379 row = nu->
pntsv - 1;
1380 pnt = nu->
pntsu - 1;
1383 const int depth =
abs(pnt - startpnt) +
abs(row - startrow);
1390 pnt = nu->
pntsu - 1;
1422 bool changed =
false;
1427 uint objects_len = 0;
1430 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1431 Object *obedit = objects[ob_index];
1462 ot->
name =
"Checker Deselect";
1463 ot->
description =
"Deselect every Nth point starting from the active one";
1464 ot->
idname =
"CURVE_OT_select_nth";
1527 Object *ob,
Nurb *nu,
const int type, KDTree_1d *tree_1d, KDTree_3d *tree_3d)
1529 float tree_entry[3] = {0.0f, 0.0f, 0.0f};
1536 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
1541 float radius_ref = bezt->
radius;
1542 tree_entry[0] = radius_ref;
1546 float weight_ref = bezt->
weight;
1547 tree_entry[0] = weight_ref;
1556 BLI_kdtree_1d_insert(tree_1d, tree_index++, tree_entry);
1559 BLI_kdtree_3d_insert(tree_3d, tree_index++, tree_entry);
1569 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
1573 float radius_ref = bp->
radius;
1574 tree_entry[0] = radius_ref;
1578 float weight_ref = bp->
weight;
1579 tree_entry[0] = weight_ref;
1588 BLI_kdtree_1d_insert(tree_1d, tree_index++, tree_entry);
1591 BLI_kdtree_3d_insert(tree_3d, tree_index++, tree_entry);
1601 const KDTree_1d *tree_1d,
1602 const KDTree_3d *tree_3d,
1606 const float thresh_cos =
cosf(thresh * (
float)
M_PI_2);
1607 bool changed =
false;
1613 for (i = nu->
pntsu, bezt = nu->
bezt; i--; bezt++) {
1619 float radius_ref = bezt->
radius;
1626 float weight_ref = bezt->
weight;
1635 KDTreeNearest_3d nearest;
1636 if (BLI_kdtree_3d_find_nearest(tree_3d, dir, &nearest) != -1) {
1638 float delta = thresh_cos -
fabsf(
cosf(orient));
1658 for (i = nu->
pntsu * nu->
pntsv, bp = nu->
bp; i--; bp++) {
1664 float radius_ref = bp->
radius;
1671 float weight_ref = bp->
weight;
1680 KDTreeNearest_3d nearest;
1681 if (BLI_kdtree_3d_find_nearest(tree_3d, dir, &nearest) != -1) {
1683 float delta =
fabsf(
cosf(orient)) - thresh_cos;
1711 int tot_nurbs_selected_all = 0;
1712 uint objects_len = 0;
1716 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1717 Object *obedit = objects[ob_index];
1722 if (tot_nurbs_selected_all == 0) {
1728 KDTree_1d *tree_1d =
NULL;
1729 KDTree_3d *tree_3d =
NULL;
1735 tree_1d = BLI_kdtree_1d_new(tot_nurbs_selected_all);
1738 tree_3d = BLI_kdtree_3d_new(tot_nurbs_selected_all);
1743 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1744 Object *obedit = objects[ob_index];
1754 type_ref |= nu->type;
1766 if (tree_1d !=
NULL) {
1767 BLI_kdtree_1d_deduplicate(tree_1d);
1768 BLI_kdtree_1d_balance(tree_1d);
1770 if (tree_3d !=
NULL) {
1771 BLI_kdtree_3d_deduplicate(tree_3d);
1772 BLI_kdtree_3d_balance(tree_3d);
1776 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
1777 Object *obedit = objects[ob_index];
1780 bool changed =
false;
1785 if (nu->type & type_ref) {
1794 obedit, nu, optype, tree_1d, tree_3d, thresh, compare);
1807 if (tree_1d !=
NULL) {
1808 BLI_kdtree_1d_free(tree_1d);
1810 if (tree_3d !=
NULL) {
1811 BLI_kdtree_3d_free(tree_3d);
1819 ot->
name =
"Select Similar";
1820 ot->
idname =
"CURVE_OT_select_similar";
1821 ot->
description =
"Select similar curve points by property type";
1846 const float *a_fl, *b_fl;
1862 const int u = nu->
pntsu;
1869 i = (i_prev + 1) % u;
1874 if (i == vert_dst) {
1884 const int u = nu->
pntsu;
1887 if (vert_src > vert_dst) {
1888 SWAP(
int, vert_src, vert_dst);
1894 SWAP(
int, vert_src, vert_dst);
1907 if (i == vert_dst) {
1916 int totu = nu->
pntsu;
1917 int totv = nu->
pntsv;
1918 int vert_num = totu * totv;
1922 int vert, vert_prev;
1928 for (
int i = 0; i < vert_num; i++) {
1930 data[i].vert_prev = -1;
1931 data[i].cost = FLT_MAX;
1937 int vert_curr =
data[vert_src].vert;
1939 data[vert_src].cost = 0.0f;
1940 data[vert_src].vert_prev = vert_src;
1944 if (vert_curr == vert_dst) {
1953 for (
int axis = 0; axis != 2; axis += 1) {
1954 int uv_other[2] = {u,
v};
1957 uv_other[axis] +=
sign;
1960 if (vert_other != -1) {
1961 const float dist =
data[vert_curr].cost +
1964 if (
data[vert_other].cost > dist) {
1965 data[vert_other].cost = dist;
1966 if (
data[vert_other].vert_prev == -1) {
1969 data[vert_other].vert_prev = vert_curr;
1978 if (vert_curr == vert_dst) {
1980 while (vert_curr != vert_src && i++ < vert_num) {
1987 vert_curr =
data[vert_curr].vert_prev;
2023 if (nu_src != nu_dst) {
2028 vert_dst_p = bezt_dst ? (
void *)bezt_dst : (
void *)bp_dst;
2030 if (vert_src == vert_dst) {
2055 ot->
name =
"Pick Shortest Path";
2056 ot->
idname =
"CURVE_OT_shortest_path_pick";
2057 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, eReportType type, const char *message)
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
#define BLI_BITMAP_SET(_bitmap, _index, _set)
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_bitmap_randomize(unsigned int *bitmap, unsigned int bits_num, unsigned int seed) 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)
bool ED_select_similar_compare_float(float delta, float thresh, eSimilarCmp compare)
bool ED_select_similar_compare_float_tree(const struct KDTree_1d *tree, float length, float thresh, eSimilarCmp 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.
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
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)
bool ED_curve_select_check(const View3D *v3d, const EditNurb *editnurb)
bool ED_curve_nurb_select_check(const View3D *v3d, const Nurb *nu)
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)
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)
int ED_curve_select_count(const View3D *v3d, const EditNurb *editnurb)
bool ED_curve_deselect_all_multi(struct bContext *C)
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 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)
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)
int ED_curve_nurb_select_count(const View3D *v3d, const Nurb *nu)
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)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
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
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))