From 8b687f6c36d66c2afed5ed129c71c225439dec57 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 May 2012 12:41:56 +0000 Subject: code cleanup: add WM_gesture_lasso_path_to_array, move mouse path to array conversion there. --- source/blender/editors/space_clip/tracking_ops.c | 27 +++++++------------- .../blender/editors/space_view3d/view3d_select.c | 22 +++++----------- source/blender/editors/uvedit/uvedit_ops.c | 29 ++++++---------------- 3 files changed, 23 insertions(+), 55 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c index 14fdadd65c7..aaa4b014451 100644 --- a/source/blender/editors/space_clip/tracking_ops.c +++ b/source/blender/editors/space_clip/tracking_ops.c @@ -945,7 +945,7 @@ void CLIP_OT_select_border(wmOperatorType *ot) } -static int do_lasso_select_mar(bContext *C, int mcords[][2], short moves, short select) +static int do_lasso_select_marker(bContext *C, int mcords[][2], short moves, short select) { ARegion *ar = CTX_wm_region(C); SpaceClip *sc = CTX_wm_space_clip(C); @@ -963,8 +963,9 @@ static int do_lasso_select_mar(bContext *C, int mcords[][2], short moves, short track = tracksbase->first; while (track) { if ((track->flag & TRACK_HIDDEN) == 0) { + MovieTrackingMarker *marker = BKE_tracking_get_marker(track, sc->user.framenr); + if (MARKER_VISIBLE(sc, track, marker)) { - MovieTrackingMarker *marker = BKE_tracking_get_marker(track, sc->user.framenr); float screen_co[2]; /* tracker in screen coords */ @@ -994,26 +995,16 @@ static int do_lasso_select_mar(bContext *C, int mcords[][2], short moves, short static int clip_lasso_select_exec(bContext *C, wmOperator *op) { - int i = 0; - int mcords[1024][2]; - - RNA_BEGIN (op->ptr, itemptr, "path") - { - float loc[2]; + int mcords_tot; + int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot); - RNA_float_get_array(&itemptr, "loc", loc); - mcords[i][0] = (int)loc[0]; - mcords[i][1] = (int)loc[1]; - i++; - if (i >= 1024) break; - } - RNA_END; - - if (i > 1) { + if (mcords) { short select; select = !RNA_boolean_get(op->ptr, "deselect"); - do_lasso_select_movieclip(C, mcords, i, select); + do_lasso_select_marker(C, mcords, mcords_tot, select); + + MEM_freeN(mcords); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index d7b03447d5b..583736716c6 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -827,22 +827,10 @@ static void view3d_lasso_select(bContext *C, ViewContext *vc, int mcords[][2], s static int view3d_lasso_select_exec(bContext *C, wmOperator *op) { ViewContext vc; - int i = 0; - int mcords[1024][2]; - - RNA_BEGIN (op->ptr, itemptr, "path") - { - float loc[2]; - - RNA_float_get_array(&itemptr, "loc", loc); - mcords[i][0] = (int)loc[0]; - mcords[i][1] = (int)loc[1]; - i++; - if (i >= 1024) break; - } - RNA_END; + int mcords_tot; + int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot); - if (i > 1) { + if (mcords) { short extend, select; view3d_operator_needs_opengl(C); @@ -851,8 +839,10 @@ static int view3d_lasso_select_exec(bContext *C, wmOperator *op) extend = RNA_boolean_get(op->ptr, "extend"); select = !RNA_boolean_get(op->ptr, "deselect"); - view3d_lasso_select(C, &vc, mcords, i, extend, select); + view3d_lasso_select(C, &vc, mcords, mcords_tot, extend, select); + MEM_freeN(mcords); + return OPERATOR_FINISHED; } return OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 595d1905e16..a4227d92e27 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -2709,34 +2709,21 @@ static int do_lasso_select_mesh_uv(bContext *C, int mcords[][2], short moves, sh static int uv_lasso_select_exec(bContext *C, wmOperator *op) { - int i = 0; - int mcords[1024][2]; + int mcords_tot; + int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot); - RNA_BEGIN (op->ptr, itemptr, "path") - { - float loc[2]; - - RNA_float_get_array(&itemptr, "loc", loc); - mcords[i][0] = (int)loc[0]; - mcords[i][1] = (int)loc[1]; - i++; - if (i >= 1024) break; - } - RNA_END; - - if (i > 1) { + if (mcords) { short select; + short change; select = !RNA_boolean_get(op->ptr, "deselect"); + change = do_lasso_select_mesh_uv(C, mcords, mcords_tot, select); - if (do_lasso_select_mesh_uv(C, mcords, i, select)) { - return OPERATOR_FINISHED; - } - else { - return OPERATOR_CANCELLED; - } + MEM_freeN(mcords); + return change ? OPERATOR_FINISHED : OPERATOR_CANCELLED; } + return OPERATOR_PASS_THROUGH; } -- cgit v1.2.3