136 const float diff_mat[4][4],
171 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
181 if (gps->editcurve !=
NULL) {
201 if (deselect ==
false) {
211 if (deselect ==
false) {
288 ot->
name =
"(De)select All Strokes";
289 ot->
idname =
"GPENCIL_OT_select_all";
290 ot->
description =
"Change selection of all Grease Pencil strokes currently visible";
327 for (
int i = 0; i < gpc->tot_curve_points; i++) {
344 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
366 ot->
name =
"Select Linked";
367 ot->
idname =
"GPENCIL_OT_select_linked";
368 ot->
description =
"Select all points in same strokes as already selected points";
400 bool changed =
false;
411 for (
int i = start; i < gpc->tot_curve_points; i++) {
413 if ((idx % 2) == 0) {
429 gpc_pt = &gpc->curve_points[gpc->tot_curve_points - 1];
451 for (
int i = start; i < gps->totpoints; i++) {
452 pt = &gps->points[i];
453 if ((row % 2) == 0) {
464 pt = &gps->points[0];
467 pt = &gps->points[gps->totpoints - 1];
495 ot->
idname =
"GPENCIL_OT_select_alternate";
496 ot->
description =
"Select alternative points in same strokes as already selected points";
510 "Do not select the first and last point of the stroke");
540 bool changed =
false;
585 for (i = 0, pt = gps->
points; i < gps->totpoints; i++, pt++) {
611 bool changed =
false;
649 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
663 if (selected_colors !=
NULL) {
681 bool changed =
false;
692 BLI_assert(!
"unhandled select grouped gpencil mode");
718 ot->
name =
"Select Grouped";
719 ot->
idname =
"GPENCIL_OT_select_grouped";
720 ot->
description =
"Select all strokes with similar characteristics";
754 bool changed =
false;
765 if (gps->editcurve !=
NULL) {
773 if ((extend ==
false) && (gps->totpoints > 1)) {
789 if ((extend ==
false) && (gps->totpoints > 1)) {
794 for (; i < gps->totpoints; i++, pt++) {
820 ot->
name =
"Select First";
821 ot->
idname =
"GPENCIL_OT_select_first";
822 ot->
description =
"Select first point in Grease Pencil strokes";
833 "only_selected_strokes",
835 "Selected Strokes Only",
836 "Only select the first point of strokes that already have points selected");
842 "Extend selection instead of deselecting all other selected points");
864 bool changed =
false;
875 if (gps->editcurve !=
NULL) {
882 if ((extend ==
false) && (gps->totpoints > 1)) {
898 if ((extend ==
false) && (gps->totpoints > 1)) {
903 for (; i < gps->totpoints - 1; i++, pt++) {
931 ot->
idname =
"GPENCIL_OT_select_last";
932 ot->
description =
"Select last point in Grease Pencil strokes";
943 "only_selected_strokes",
945 "Selected Strokes Only",
946 "Only select the last point of strokes that already have points selected");
952 "Extend selection instead of deselecting all other selected points");
970 bool changed =
false;
976 bool prev_sel =
false;
1028 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
1047 for (pt -= 1; i > 0; i--, pt--) {
1082 ot->
name =
"Select More";
1083 ot->
idname =
"GPENCIL_OT_select_more";
1084 ot->
description =
"Grow sets of selected Grease Pencil points";
1110 bool changed =
false;
1111 if (is_curve_edit) {
1117 bool prev_sel =
false;
1123 if (prev_sel ==
false) {
1145 if (prev_sel ==
false) {
1173 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
1176 if (prev_sel ==
false) {
1192 for (pt -= 1; i > 0; i--, pt--) {
1195 if (prev_sel ==
false) {
1228 ot->
name =
"Select Less";
1229 ot->
idname =
"GPENCIL_OT_select_less";
1230 ot->
description =
"Shrink sets of selected Grease Pencil points";
1262 const float diff_mat[4][4],
1263 const int selectmode,
1265 const bool is_curve_edit)
1270 bool changed =
false;
1275 for (i = 0, pt = gps->
points; i < gps->totpoints; i++, pt++) {
1285 if (((x0 - mx) * (x0 - mx) + (y0 - my) * (y0 - my)) <= radius * radius) {
1307 float r_hita[3], r_hitb[3];
1310 gpd, gpl, gps_active, pt_active, hit_select,
false, scale, r_hita, r_hitb);
1318 for (i = 0, pt = gps->
points; i < gps->totpoints; i++, pt++) {
1332 if (is_curve_edit && hit && gps_active->
editcurve ==
NULL) {
1355 const float diff_mat[4][4],
1356 const int selectmode)
1370 if (bezt->
hide == 1) {
1378 int from = (!handles_visible) ? 1 : 0;
1379 int to = (!handles_visible) ? 2 : 3;
1381 for (
int j =
from; j < to; j++) {
1399 int dist_x = screen_co[0] - mx;
1400 int dist_y = screen_co[1] - my;
1401 int dist = dist_x * dist_x + dist_y * dist_y;
1402 if (dist <= radius * radius) {
1482 bool changed =
false;
1485 rect.
xmin = mx - radius;
1486 rect.
ymin = my - radius;
1487 rect.
xmax = mx + radius;
1488 rect.
ymax = my + radius;
1490 if (is_curve_edit) {
1499 C, gps, gpc, mx, my, radius,
select, &rect, gps_iter.diff_mat, selectmode);
1504 if (changed ==
false) {
1525 gpstroke_iter.diff_mat,
1550 ot->
name =
"Circle Select";
1551 ot->
description =
"Select Grease Pencil strokes using brush selection";
1552 ot->
idname =
"GPENCIL_OT_select_circle";
1587 const float diff_mat[4][4],
1592 static bool gpencil_stroke_fill_isect_rect(
ARegion *region,
1594 const float diff_mat[4][4],
1597 int min[2] = {-INT_MAX, -INT_MAX};
1598 int max[2] = {INT_MAX, INT_MAX};
1602 for (
int i = 0; i < gps->
totpoints; i++) {
1604 int *pt2d = points2d[i];
1619 int pt1[2], pt2[2], pt3[2];
1620 int tri_min[2] = {-INT_MAX, -INT_MAX};
1621 int tri_max[2] = {INT_MAX, INT_MAX};
1631 rcti tri_bb = {tri_min[0], tri_max[0], tri_min[1], tri_max[1]};
1660 const bool strokemode,
1670 bool changed =
false;
1675 bool any_select =
false;
1676 for (
int i = 0; i < gpc->tot_curve_points; i++) {
1680 if (bezt->
hide == 1) {
1684 const bool handles_visible = (handle_all || (handle_only_selected &&
1687 if (handles_visible) {
1688 for (
int j = 0; j < 3; j++) {
1700 if (sel_op_result != -1) {
1701 if (sel_op_result) {
1724 const bool is_select = bezt->
f2;
1734 if (sel_op_result != -1) {
1735 if (sel_op_result) {
1766 whole = gpencil_stroke_fill_isect_rect(region, gps, gps_iter.diff_mat, box);
1770 if (strokemode || whole) {
1772 if (sel_op_result != -1) {
1773 for (
int i = 0; i < gpc->tot_curve_points; i++) {
1777 if (sel_op_result) {
1787 if (sel_op_result) {
1810 const bool strokemode,
1811 const bool segmentmode,
1814 const bool is_curve_edit)
1817 bool changed =
false;
1830 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
1850 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
1855 if (strokemode ==
false) {
1858 if (sel_op_result != -1) {
1866 float r_hita[3], r_hitb[3];
1868 gpd, gpl, gps_active, pt_active, hit_select,
false, scale, r_hita, r_hitb);
1889 mval[0] = (box.
xmax + box.
xmin) / 2;
1890 mval[1] = (box.
ymax + box.
ymin) / 2;
1896 if ((strokemode) || (whole)) {
1900 if (sel_op_result != -1) {
1901 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
1904 if (sel_op_result) {
1916 if (is_curve_edit && (hit || whole) && gps_active->
editcurve ==
NULL) {
1964 bool changed =
false;
1972 if (is_curve_edit) {
1974 C, ob, is_inside_fn, box,
user_data, strokemode, sel_op);
1977 if (changed ==
false) {
2018 const float diff_mat[4][4],
2041 ot->
description =
"Select Grease Pencil strokes within a rectangular region";
2042 ot->
idname =
"GPENCIL_OT_select_box";
2067 const float diff_mat[4][4],
2104 ot->
name =
"Lasso Select Strokes";
2105 ot->
description =
"Select Grease Pencil strokes using lasso selection";
2106 ot->
idname =
"GPENCIL_OT_select_lasso";
2130 const int radius_squared,
2141 int hit_distance = radius_squared;
2145 for (
int i = 0; i < gpc->tot_curve_points; i++) {
2149 if (bezt->
hide == 1) {
2157 int from = (!handles_visible) ? 1 : 0;
2158 int to = (!handles_visible) ? 2 : 3;
2160 for (
int j =
from; j < to; j++) {
2165 if (pt_distance <= radius_squared && pt_distance < hit_distance) {
2171 hit_distance = pt_distance;
2190 const float radius = 0.4f *
U.widget_unit;
2198 const bool deselect_all =
RNA_boolean_get(op->
ptr,
"deselect_all") && !use_shift_extend;
2211 char hit_curve_handle = 0;
2212 int hit_distance = radius_squared;
2233 if (is_curve_edit) {
2244 if (hit_curve ==
NULL) {
2255 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
2267 if (pt_distance <= radius_squared) {
2269 if (pt_distance < hit_distance) {
2271 hit_stroke = gps_active;
2273 hit_distance = pt_distance;
2283 if (!hit_curve && !hit_curve_point && !hit_point && !hit_stroke) {
2302 if (is_curve_edit && hit_point !=
NULL) {
2309 if (hit_curve_point !=
NULL) {
2311 if ((bezt->
f1 &
SELECT) && (hit_curve_handle == 0)) {
2314 if ((bezt->
f2 &
SELECT) && (hit_curve_handle == 1)) {
2317 if ((bezt->
f3 &
SELECT) && (hit_curve_handle == 2)) {
2327 if (extend ==
false) {
2334 if (is_curve_edit && hit_curve ==
NULL) {
2341 if (hit_curve !=
NULL) {
2349 for (i = 0, pt = hit_stroke->
points; i < hit_stroke->totpoints; i++, pt++) {
2350 if (deselect ==
false) {
2359 if (deselect ==
false) {
2371 if (deselect ==
false) {
2372 if (hit_curve_point !=
NULL) {
2398 float r_hita[3], r_hitb[3];
2401 gpd, hit_layer, hit_stroke, hit_point, hit_select,
false, scale, r_hita, r_hitb);
2406 if (hit_curve_point !=
NULL) {
2424 if (hit_curve_point !=
NULL || hit_point !=
NULL) {
2454 ot->
description =
"Select Grease Pencil strokes and/or stroke points";
2472 "Select entire strokes instead of just the nearest stroke vertex");
2495 const int threshold,
2498 const float range =
pow(10, 5 - threshold);
2518 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
2524 uint key = truncf(hsv[0] * range);
2566 const float range =
pow(10, 5 - threshold);
2568 bool changed =
false;
2584 bool gps_selected =
false;
2586 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
2595 uint key = truncf(hsv[0] * range);
2599 gps_selected =
true;
2611 for (i = 0, pt1 = gps->points; i < gps->totpoints; i++, pt1++) {
2631 if (hue_table !=
NULL) {
2643 ot->
name =
"Select Vertex Color";
2644 ot->
idname =
"GPENCIL_OT_select_vertex_color";
2645 ot->
description =
"Select all points with similar vertex color of current selected";
2662 "Tolerance of the selection. Higher values select a wider range of similar colors",
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
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 ToolSettings * CTX_data_tool_settings(const bContext *C)
void BKE_gpencil_curve_sync_selection(struct bGPdata *gpd, struct bGPDstroke *gps)
void BKE_gpencil_stroke_select_index_set(struct bGPdata *gpd, struct bGPDstroke *gps)
void BKE_gpencil_stroke_select_index_reset(struct bGPDstroke *gps)
bool BKE_gpencil_stroke_select_check(const struct bGPDstroke *gps)
struct bGPDframe * BKE_gpencil_layer_frame_get(struct bGPDlayer *gpl, int cframe, eGP_GetFrame_Mode addnew)
void BKE_gpencil_stroke_sync_selection(struct bGPdata *gpd, struct bGPDstroke *gps)
void BKE_gpencil_stroke_editcurve_update(struct bGPdata *gpd, struct bGPDlayer *gpl, struct bGPDstroke *gps)
void BKE_gpencil_stroke_geometry_update(struct bGPdata *gpd, struct bGPDstroke *gps)
General operations, lookup, etc. for materials.
struct MaterialGPencilStyle * BKE_gpencil_material_settings(struct Object *ob, short act)
void BKE_report(ReportList *reports, ReportType type, const char *message)
GSet * BLI_gset_str_new(const char *info)
unsigned int BLI_ghash_len(GHash *gh) ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_haskey(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
GHash * BLI_ghash_int_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_gset_haskey(GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_add(GSet *gs, void *key)
void BLI_lasso_boundbox(struct rcti *rect, const int mcoords[][2], const unsigned int mcoords_len)
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)
#define LISTBASE_FOREACH(type, var, list)
void rgb_to_hsv_compat_v(const float rgb[3], float r_hsv[3])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
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
bool BLI_rcti_isect_segment(const struct rcti *rect, const int s1[2], const int s2[2])
bool BLI_rcti_isect_pt(const struct rcti *rect, const int x, const int y)
bool BLI_rcti_isect(const struct rcti *src1, const struct rcti *src2, struct rcti *dest)
bool BLI_rcti_inside_rcti(const rcti *rct_a, const rcti *rct_b)
#define DO_MINMAX2(vec, min, max)
#define POINTER_FROM_INT(i)
#define SET_FLAG_FROM_TEST(value, test, flag)
void DEG_id_tag_update(struct ID *id, int flag)
@ ID_RECALC_COPY_ON_WRITE
#define BEZT_DESEL_IDX(bezt, i)
#define BEZT_ISSEL_IDX(bezt, i)
#define BEZT_SEL_ALL(bezt)
#define BEZT_ISSEL_ANY(bezt)
#define BEZT_DESEL_ALL(bezt)
#define BEZT_SEL_IDX(bezt, i)
#define GPENCIL_ANY_VERTEX_MASK(flag)
#define GPENCIL_VERTEX_MODE(gpd)
#define GPENCIL_SCULPT_MODE(gpd)
@ GP_STROKE_NEEDS_CURVE_UPDATE
#define GPENCIL_PAINT_MODE(gpd)
#define GPENCIL_NONE_EDIT_MODE(gpd)
#define GPENCIL_ANY_SCULPT_MASK(flag)
@ GP_DATA_STROKE_PAINTMODE
#define GPENCIL_ANY_MODE(gpd)
#define GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd)
Object is a sort of wrapper for general info.
eGP_Sculpt_SelectMaskFlag
@ GP_SCULPT_MASK_SELECTMODE_POINT
@ GP_SCULPT_MASK_SELECTMODE_STROKE
@ GP_SCULPT_MASK_SELECTMODE_SEGMENT
@ GP_VERTEX_MASK_SELECTMODE_SEGMENT
@ GP_VERTEX_MASK_SELECTMODE_STROKE
@ GP_VERTEX_MASK_SELECTMODE_POINT
#define SEL_OP_USE_PRE_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)
eV3DProjStatus ED_view3d_project_int_global(const struct ARegion *region, const float co[3], int r_co[2], const eV3DProjTest flag)
Read Guarded memory(de)allocation.
static bool is_inside(int x, int y, int cols, int rows)
int gpencil_delete_selected_point_wrap(bContext *C)
#define GP_EDITABLE_CURVES_END(gpstroke_iter)
#define GP_EDITABLE_CURVES_BEGIN(gpstroke_iter, C, gpl, gps, gpc)
void gpencil_point_conversion_init(struct bContext *C, GP_SpaceConversion *r_gsc)
#define GP_EDITABLE_STROKES_BEGIN(gpstroke_iter, C, gpl, gps)
#define GP_EVALUATED_STROKES_BEGIN(gpstroke_iter, C, gpl, gps)
void gpencil_point_to_parent_space(const bGPDspoint *pt, const float diff_mat[4][4], bGPDspoint *r_pt)
#define GP_EDITABLE_STROKES_END(gpstroke_iter)
#define GP_EVALUATED_STROKES_END(gpstroke_iter)
void gpencil_point_to_xy(const GP_SpaceConversion *gsc, const struct bGPDstroke *gps, const struct bGPDspoint *pt, int *r_x, int *r_y)
static int gpencil_select_more_exec(bContext *C, wmOperator *UNUSED(op))
void GPENCIL_OT_select_more(wmOperatorType *ot)
void GPENCIL_OT_select_alternate(wmOperatorType *ot)
static bool gpencil_select_all_poll(bContext *C)
void GPENCIL_OT_select_grouped(wmOperatorType *ot)
struct GP_SelectUserData GP_SelectUserData
void GPENCIL_OT_select_circle(wmOperatorType *ot)
static int gpencil_generic_select_exec(bContext *C, wmOperator *op, GPencilTestFn is_inside_fn, rcti box, GP_SelectUserData *user_data)
void GPENCIL_OT_select_all(wmOperatorType *ot)
static bool gpencil_generic_stroke_select(bContext *C, Object *ob, bGPdata *gpd, GPencilTestFn is_inside_fn, rcti box, GP_SelectUserData *user_data, const bool strokemode, const bool segmentmode, const eSelectOp sel_op, const float scale, const bool is_curve_edit)
static int gpencil_select_last_exec(bContext *C, wmOperator *op)
static bool gpencil_do_curve_circle_sel(bContext *C, bGPDstroke *gps, bGPDcurve *gpc, const int mx, const int my, const int radius, const bool select, rcti *rect, const float diff_mat[4][4], const int selectmode)
static bool gpencil_select_same_layer(bContext *C)
static int gpencil_select_all_exec(bContext *C, wmOperator *op)
void GPENCIL_OT_select(wmOperatorType *ot)
static bool gpencil_test_lasso(ARegion *region, const float diff_mat[4][4], const float pt[3], GP_SelectUserData *user_data)
static int gpencil_lasso_select_exec(bContext *C, wmOperator *op)
void GPENCIL_OT_select_vertex_color(wmOperatorType *ot)
bool(* GPencilTestFn)(ARegion *region, const float diff_mat[4][4], const float pt[3], GP_SelectUserData *user_data)
static bool gpencil_select_same_material(bContext *C)
static void gpencil_select_curve_point(bContext *C, const int mval[2], const int radius_squared, bGPDlayer **r_gpl, bGPDstroke **r_gps, bGPDcurve **r_gpc, bGPDcurve_point **r_pt, char *handle)
static bool gpencil_stroke_do_circle_sel(bGPdata *gpd, bGPDlayer *gpl, bGPDstroke *gps, GP_SpaceConversion *gsc, const int mx, const int my, const int radius, const bool select, rcti *rect, const float diff_mat[4][4], const int selectmode, const float scale, const bool is_curve_edit)
static void select_all_curve_points(bGPdata *gpd, bGPDstroke *gps, bGPDcurve *gpc, bool deselect)
void GPENCIL_OT_select_box(wmOperatorType *ot)
static int gpencil_select_first_exec(bContext *C, wmOperator *op)
static int gpencil_select_mode_from_sculpt(eGP_Sculpt_SelectMaskFlag mode)
static int gpencil_select_vertex_color_exec(bContext *C, wmOperator *op)
static void gpencil_selected_hue_table(bContext *C, Object *ob, const int threshold, GHash *hue_table)
static int gpencil_select_grouped_exec(bContext *C, wmOperator *op)
static int gpencil_circle_select_exec(bContext *C, wmOperator *op)
static bool gpencil_select_vertex_color_poll(bContext *C)
static int gpencil_select_less_exec(bContext *C, wmOperator *UNUSED(op))
static int gpencil_box_select_exec(bContext *C, wmOperator *op)
void GPENCIL_OT_select_less(wmOperatorType *ot)
static void deselect_all_selected(bContext *C)
static bool gpencil_select_poll(bContext *C)
static int gpencil_select_mode_from_vertex(eGP_Sculpt_SelectMaskFlag mode)
static int gpencil_select_alternate_exec(bContext *C, wmOperator *op)
void GPENCIL_OT_select_first(wmOperatorType *ot)
static bool gpencil_3d_point_to_screen_space(ARegion *region, const float diff_mat[4][4], const float co[3], int r_co[2])
static bool gpencil_generic_curve_select(bContext *C, Object *ob, GPencilTestFn is_inside_fn, rcti UNUSED(box), GP_SelectUserData *user_data, const bool strokemode, const eSelectOp sel_op)
void GPENCIL_OT_select_last(wmOperatorType *ot)
static int gpencil_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool gpencil_test_box(ARegion *region, const float diff_mat[4][4], const float pt[3], GP_SelectUserData *user_data)
static int gpencil_select_linked_exec(bContext *C, wmOperator *op)
static int gpencil_select_exec(bContext *C, wmOperator *op)
void GPENCIL_OT_select_lasso(wmOperatorType *ot)
void GPENCIL_OT_select_linked(wmOperatorType *ot)
void ED_gpencil_select_toggle_all(bContext *C, int action)
bool ED_gpencil_stroke_material_editable(Object *ob, const bGPDlayer *gpl, const bGPDstroke *gps)
bool ED_gpencil_stroke_point_is_inside(bGPDstroke *gps, GP_SpaceConversion *gsc, int mouse[2], const float diff_mat[4][4])
void ED_gpencil_select_curve_toggle_all(bContext *C, int action)
int ED_gpencil_select_stroke_segment(bGPdata *gpd, bGPDlayer *gpl, bGPDstroke *gps, bGPDspoint *pt, bool select, bool insert, const float scale, float r_hita[3], float r_hitb[3])
bool ED_gpencil_stroke_can_use(const bContext *C, const bGPDstroke *gps)
bGPdata * ED_gpencil_data_get_active(const bContext *C)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
INLINE Rall1d< T, V, S > pow(const Rall1d< T, V, S > &arg, double m)
static void area(int d1, int d2, int e1, int e2, float weights[2])
static const EnumPropertyItem prop_select_grouped_types[]
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_struct_property_is_set(PointerRNA *ptr, const char *identifier)
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_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const int(* lasso_coords)[2]
bGPDcurve_point * curve_points
struct bGPDspoint * pt_orig
bGPDspoint_Runtime runtime
struct bGPDstroke * gps_orig
bGPDstroke_Runtime runtime
struct bGPDcurve * editcurve
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
struct ReportList * reports
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
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_select_all(wmOperatorType *ot)
void WM_operator_properties_mouse_select(wmOperatorType *ot)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))