code cleanup: use functions to initialize selection user data structs, use radius...
authorCampbell Barton <ideasman42@gmail.com>
Fri, 5 Oct 2012 15:44:11 +0000 (15:44 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 5 Oct 2012 15:44:11 +0000 (15:44 +0000)
edge_fully_inside_rect() & edge_inside_rect() args were shorts when all callers were passing ints.

16 files changed:
source/blender/blenlib/BLI_lasso.h
source/blender/blenlib/intern/lasso.c
source/blender/editors/include/ED_mesh.h
source/blender/editors/include/ED_particle.h
source/blender/editors/include/ED_view3d.h
source/blender/editors/mask/mask_select.c
source/blender/editors/mesh/editmesh_select.c
source/blender/editors/object/object_constraint.c
source/blender/editors/physics/particle_edit.c
source/blender/editors/space_clip/tracking_select.c
source/blender/editors/space_node/node_select.c
source/blender/editors/space_view3d/view3d_select.c
source/blender/editors/transform/transform.c
source/blender/editors/uvedit/uvedit_ops.c
source/blender/windowmanager/WM_api.h
source/blender/windowmanager/intern/wm_operators.c

index 85a000b..a7e90a5 100644 (file)
@@ -34,8 +34,8 @@
 
 struct rcti;
 
-void BLI_lasso_boundbox(struct rcti *rect, int mcords[][2], short moves);
-int  BLI_lasso_is_point_inside(int mcords[][2], short moves, const int sx, const int sy, const int error_value);
-int  BLI_lasso_is_edge_inside(int mcords[][2], short moves, int x0, int y0, int x1, int y1, const int error_value);
+void BLI_lasso_boundbox(struct rcti *rect, const int mcords[][2], const short moves);
+int  BLI_lasso_is_point_inside(const int mcords[][2], const short moves, const int sx, const int sy, const int error_value);
+int  BLI_lasso_is_edge_inside(const int mcords[][2], const short moves, int x0, int y0, int x1, int y1, const int error_value);
 
 #endif
index 7df4da8..5cd8bb8 100644 (file)
@@ -37,7 +37,7 @@
 
 #include "BLI_lasso.h" /* own include */
 
-void BLI_lasso_boundbox(rcti *rect, int mcords[][2], short moves)
+void BLI_lasso_boundbox(rcti *rect, const int mcords[][2], const short moves)
 {
        short a;
 
@@ -53,14 +53,14 @@ void BLI_lasso_boundbox(rcti *rect, int mcords[][2], short moves)
 }
 
 
-int BLI_lasso_is_point_inside(int mcords[][2], short moves,
+int BLI_lasso_is_point_inside(const int mcords[][2], const short moves,
                               const int sx, const int sy,
                               const int error_value)
 {
        /* we do the angle rule, define that all added angles should be about zero or (2 * PI) */
        float angletot = 0.0, dot, ang, cross, fp1[2], fp2[2];
        int a;
-       int *p1, *p2;
+       const int *p1, *p2;
 
        if (sx == error_value) {
                return 0;
@@ -100,7 +100,7 @@ int BLI_lasso_is_point_inside(int mcords[][2], short moves,
 }
 
 /* edge version for lasso select. we assume boundbox check was done */
-int BLI_lasso_is_edge_inside(int mcords[][2], short moves,
+int BLI_lasso_is_edge_inside(const int mcords[][2], const short moves,
                              int x0, int y0, int x1, int y1,
                              const int error_value)
 {
index 6281861..028b5db 100644 (file)
@@ -138,7 +138,7 @@ int  EDBM_backbuf_border_init(struct ViewContext *vc, short xmin, short ymin, sh
 int  EDBM_backbuf_check(unsigned int index);
 void EDBM_backbuf_free(void);
 
-int  EDBM_backbuf_border_mask_init(struct ViewContext *vc, int mcords[][2], short tot,
+int  EDBM_backbuf_border_mask_init(struct ViewContext *vc, const int mcords[][2], short tot,
                                    short xmin, short ymin, short xmax, short ymax);
 int  EDBM_backbuf_circle_init(struct ViewContext *vc, short xs, short ys, short rads);
 
index 0076b08..dee97c7 100644 (file)
@@ -61,7 +61,7 @@ void PE_update_object(struct Scene *scene, struct Object *ob, int useflag);
 int PE_mouse_particles(struct bContext *C, const int mval[2], int extend, int deselect, int toggle);
 int PE_border_select(struct bContext *C, struct rcti *rect, int select, int extend);
 int PE_circle_select(struct bContext *C, int selecting, const int mval[2], float rad);
-int PE_lasso_select(struct bContext *C, int mcords[][2], short moves, short extend, short select);
+int PE_lasso_select(struct bContext *C, const int mcords[][2], const short moves, short extend, short select);
 void PE_deselect_all_visible(struct PTCacheEdit *edit);
 
 /* undo */
index acc5386..8161dd2 100644 (file)
@@ -40,6 +40,7 @@ struct BPoint;
 struct BezTriple;
 struct BezTriple;
 struct BoundBox;
+struct EditBone;
 struct ImBuf;
 struct MVert;
 struct Main;
@@ -170,6 +171,8 @@ void mesh_foreachScreenEdge(struct ViewContext *vc, void (*func)(void *userData,
 void mesh_foreachScreenFace(struct ViewContext *vc, void (*func)(void *userData, struct BMFace *efa, int x, int y, int index), void *userData);
 void nurbs_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct Nurb *nu, struct BPoint *bp, struct BezTriple *bezt, int beztindex, int x, int y), void *userData);
 void lattice_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct BPoint *bp, int x, int y), void *userData);
+void armature_foreachScreenBone(struct ViewContext *vc, void (*func)(void *userData, struct EditBone *ebone, int x0, int y0, int x1, int y1), void *userData);
+
 
 void ED_view3d_clipping_calc(struct BoundBox *bb, float planes[4][4], struct bglMats *mats, const struct rcti *rect);
 void ED_view3d_clipping_local(struct RegionView3D *rv3d, float mat[][4]);
index 55bad39..69cfdf4 100644 (file)
@@ -485,7 +485,7 @@ void MASK_OT_select_border(wmOperatorType *ot)
        WM_operator_properties_gesture_border(ot, TRUE);
 }
 
-static int do_lasso_select_mask(bContext *C, int mcords[][2], short moves, short select)
+static int do_lasso_select_mask(bContext *C, const int mcords[][2], short moves, short select)
 {
        ScrArea *sa = CTX_wm_area(C);
        ARegion *ar = CTX_wm_region(C);
@@ -549,7 +549,7 @@ static int do_lasso_select_mask(bContext *C, int mcords[][2], short moves, short
 static int clip_lasso_select_exec(bContext *C, wmOperator *op)
 {
        int mcords_tot;
-       int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
+       const int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
 
        if (mcords) {
                short select;
index abc8cb6..801c938 100644 (file)
@@ -131,7 +131,7 @@ unsigned int bm_solidoffs = 0, bm_wireoffs = 0, bm_vertoffs = 0;    /* set in dr
 static char *selbuf = NULL;
 
 /* opengl doesn't support concave... */
-static void draw_triangulated(int mcords[][2], short tot)
+static void draw_triangulated(const int mcords[][2], const short tot)
 {
        ListBase lb = {NULL, NULL};
        DispList *dl;
@@ -227,7 +227,7 @@ void EDBM_backbuf_free(void)
  * - grab again and compare
  * returns 'OK' 
  */
-int EDBM_backbuf_border_mask_init(ViewContext *vc, int mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax)
+int EDBM_backbuf_border_mask_init(ViewContext *vc, const int mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax)
 {
        unsigned int *dr, *drm;
        struct ImBuf *buf, *bufmask;
index 6acb5c6..56f2426 100644 (file)
@@ -982,7 +982,7 @@ static int followpath_path_animate_exec(bContext *C, wmOperator *op)
        return OPERATOR_FINISHED;
 }
 
-static int followpath_path_animate_invoke(bContext *C, wmOperator *op, wmEvent *evt)
+static int followpath_path_animate_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
 {
        /* hook up invoke properties for figuring out which constraint we're dealing with */
        if (edit_constraint_invoke_properties(C, op)) {
index b03c637..ee2b5e0 100644 (file)
@@ -1633,7 +1633,7 @@ int PE_circle_select(bContext *C, int selecting, const int mval[2], float rad)
 
 /************************ lasso select operator ************************/
 
-int PE_lasso_select(bContext *C, int mcords[][2], short moves, short extend, short select)
+int PE_lasso_select(bContext *C, const int mcords[][2], const short moves, short extend, short select)
 {
        Scene *scene= CTX_data_scene(C);
        Object *ob= CTX_data_active_object(C);
index 507e492..4f62d3f 100644 (file)
@@ -413,7 +413,7 @@ void CLIP_OT_select_border(wmOperatorType *ot)
 
 /********************** lasso select operator *********************/
 
-static int do_lasso_select_marker(bContext *C, int mcords[][2], short moves, short select)
+static int do_lasso_select_marker(bContext *C, const int mcords[][2], const short moves, short select)
 {
        SpaceClip *sc = CTX_wm_space_clip(C);
        ARegion *ar = CTX_wm_region(C);
@@ -469,7 +469,7 @@ static int do_lasso_select_marker(bContext *C, int mcords[][2], short moves, sho
 static int clip_lasso_select_exec(bContext *C, wmOperator *op)
 {
        int mcords_tot;
-       int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
+       const int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
 
        if (mcords) {
                short select;
index f7757ce..b0916a5 100644 (file)
@@ -539,7 +539,7 @@ void NODE_OT_select_border(wmOperatorType *ot)
 
 /* ****** Lasso Select ****** */
 
-static int do_lasso_select_node(bContext *C, int mcords[][2], short moves, short select)
+static int do_lasso_select_node(bContext *C, const int mcords[][2], short moves, short select)
 {
        SpaceNode *snode = CTX_wm_space_node(C);
        bNode *node;
@@ -585,7 +585,7 @@ static int do_lasso_select_node(bContext *C, int mcords[][2], short moves, short
 static int node_lasso_select_exec(bContext *C, wmOperator *op)
 {
        int mcords_tot;
-       int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
+       const int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
 
        if (mcords) {
                short select;
index 926c19d..a9eee92 100644 (file)
@@ -256,10 +256,33 @@ static void edbm_backbuf_check_and_select_tfaces(Mesh *me, int select)
 
 typedef struct LassoSelectUserData {
        ViewContext *vc;
-       rcti *rect;
-       int (*mcords)[2], moves, select, pass, done;
+       const rcti *rect;
+       const int (*mcords)[2];
+       int moves;
+       int select;
+
+       /* runtime */
+       int pass;
+       int is_done;
+       int is_change;
 } LassoSelectUserData;
 
+static void view3d_userdata_lassoselect_init(LassoSelectUserData *r_data,
+                                             ViewContext *vc, const rcti *rect, const int (*mcords)[2],
+                                             const int moves, const int select)
+{
+       r_data->vc = vc;
+       r_data->rect = rect;
+       r_data->mcords = mcords;
+       r_data->moves = moves;
+       r_data->select = select;
+
+       /* runtime */
+       r_data->pass = 0;
+       r_data->is_done = FALSE;
+       r_data->is_change = FALSE;
+}
+
 static int view3d_selectable_data(bContext *C)
 {
        Object *ob = CTX_data_active_object(C);
@@ -290,12 +313,12 @@ static int view3d_selectable_data(bContext *C)
 
 
 /* helper also for borderselect */
-static int edge_fully_inside_rect(rcti *rect, short x1, short y1, short x2, short y2)
+static int edge_fully_inside_rect(const rcti *rect, int x1, int y1, int x2, int y2)
 {
        return BLI_rcti_isect_pt(rect, x1, y1) && BLI_rcti_isect_pt(rect, x2, y2);
 }
 
-static int edge_inside_rect(rcti *rect, short x1, short y1, short x2, short y2)
+static int edge_inside_rect(const rcti *rect, int x1, int y1, int x2, int y2)
 {
        int d1, d2, d3, d4;
        
@@ -323,7 +346,7 @@ static int edge_inside_rect(rcti *rect, short x1, short y1, short x2, short y2)
 /* warning; lasso select with backbuffer-check draws in backbuf with persp(PERSP_WIN) 
  * and returns with persp(PERSP_VIEW). After lasso select backbuf is not OK
  */
-static void do_lasso_select_pose(ViewContext *vc, Object *ob, int mcords[][2], short moves, short select)
+static void do_lasso_select_pose(ViewContext *vc, Object *ob, const int mcords[][2], short moves, short select)
 {
        bPoseChannel *pchan;
        bArmature *arm = ob->data;
@@ -390,7 +413,7 @@ static void object_deselect_all_visible(Scene *scene, View3D *v3d)
        }
 }
 
-static void do_lasso_select_objects(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_objects(ViewContext *vc, const int mcords[][2], const short moves, short extend, short select)
 {
        Base *base;
        
@@ -434,7 +457,7 @@ static void do_lasso_select_mesh__doSelectEdge(void *userData, BMEdge *eed, int
                            BLI_lasso_is_point_inside(data->mcords, data->moves, x1, y1, IS_CLIPPED))
                        {
                                BM_edge_select_set(data->vc->em->bm, eed, data->select);
-                               data->done = TRUE;
+                               data->is_done = TRUE;
                        }
                }
                else {
@@ -455,7 +478,7 @@ static void do_lasso_select_mesh__doSelectFace(void *userData, BMFace *efa, int
        }
 }
 
-static void do_lasso_select_mesh(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_mesh(ViewContext *vc, const int mcords[][2], short moves, short extend, short select)
 {
        LassoSelectUserData data;
        ToolSettings *ts = vc->scene->toolsettings;
@@ -467,13 +490,7 @@ static void do_lasso_select_mesh(ViewContext *vc, int mcords[][2], short moves,
        /* set editmesh */
        vc->em = BMEdit_FromObject(vc->obedit);
 
-       data.vc = vc;
-       data.rect = &rect;
-       data.mcords = mcords;
-       data.moves = moves;
-       data.select = select;
-       data.done = FALSE;
-       data.pass = 0;
+       view3d_userdata_lassoselect_init(&data, vc, &rect, mcords, moves, select);
 
        if (extend == 0 && select)
                EDBM_flag_disable_all(vc->em, BM_ELEM_SELECT);
@@ -497,7 +514,7 @@ static void do_lasso_select_mesh(ViewContext *vc, int mcords[][2], short moves,
                data.pass = 0;
                mesh_foreachScreenEdge(vc, do_lasso_select_mesh__doSelectEdge, &data, V3D_CLIP_TEST_OFF);
 
-               if (data.done == 0) {
+               if (data.is_done == 0) {
                        data.pass = 1;
                        mesh_foreachScreenEdge(vc, do_lasso_select_mesh__doSelectEdge, &data, V3D_CLIP_TEST_OFF);
                }
@@ -549,15 +566,11 @@ static void do_lasso_select_curve__doSelect(void *userData, Nurb *UNUSED(nu), BP
        }
 }
 
-static void do_lasso_select_curve(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_curve(ViewContext *vc, const int mcords[][2], short moves, short extend, short select)
 {
        LassoSelectUserData data;
 
-       /* set vc->editnurb */
-       data.vc = vc;
-       data.mcords = mcords;
-       data.moves = moves;
-       data.select = select;
+       view3d_userdata_lassoselect_init(&data, vc, NULL, mcords, moves, select);
 
        if (extend == 0 && select)
                CU_deselect_all(vc->obedit);
@@ -574,14 +587,11 @@ static void do_lasso_select_lattice__doSelect(void *userData, BPoint *bp, int x,
                bp->f1 = data->select ? (bp->f1 | SELECT) : (bp->f1 & ~SELECT);
        }
 }
-static void do_lasso_select_lattice(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_lattice(ViewContext *vc, const int mcords[][2], short moves, short extend, short select)
 {
        LassoSelectUserData data;
 
-       /* set editdata in vc */
-       data.mcords = mcords;
-       data.moves = moves;
-       data.select = select;
+       view3d_userdata_lassoselect_init(&data, vc, NULL, mcords, moves, select);
 
        if (extend == 0 && select)
                ED_setflagsLatt(vc->obedit, 0);
@@ -590,7 +600,7 @@ static void do_lasso_select_lattice(ViewContext *vc, int mcords[][2], short move
        lattice_foreachScreenVert(vc, do_lasso_select_lattice__doSelect, &data);
 }
 
-static void do_lasso_select_armature(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_armature(ViewContext *vc, const int mcords[][2], short moves, short extend, short select)
 {
        bArmature *arm = vc->obedit->data;
        EditBone *ebone;
@@ -656,7 +666,7 @@ static void do_lasso_select_armature(ViewContext *vc, int mcords[][2], short mov
 }
 
 
-static void do_lasso_select_meta(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_meta(ViewContext *vc, const int mcords[][2], short moves, short extend, short select)
 {
        MetaBall *mb = (MetaBall *)vc->obedit->data;
        MetaElem *ml;
@@ -742,7 +752,7 @@ static int do_paintvert_box_select(ViewContext *vc, rcti *rect, int select, int
        return OPERATOR_FINISHED;
 }
 
-static void do_lasso_select_paintvert(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_paintvert(ViewContext *vc, const int mcords[][2], short moves, short extend, short select)
 {
        Object *ob = vc->obact;
        Mesh *me = ob ? ob->data : NULL;
@@ -764,7 +774,7 @@ static void do_lasso_select_paintvert(ViewContext *vc, int mcords[][2], short mo
 
        paintvert_flush_flags(ob);
 }
-static void do_lasso_select_paintface(ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void do_lasso_select_paintface(ViewContext *vc, const int mcords[][2], short moves, short extend, short select)
 {
        Object *ob = vc->obact;
        Mesh *me = ob ? ob->data : NULL;
@@ -819,7 +829,9 @@ static void do_lasso_select_node(int mcords[][2], short moves, short select)
 }
 #endif
 
-static void view3d_lasso_select(bContext *C, ViewContext *vc, int mcords[][2], short moves, short extend, short select)
+static void view3d_lasso_select(bContext *C, ViewContext *vc,
+                                const int mcords[][2], short moves,
+                                short extend, short select)
 {
        Object *ob = CTX_data_active_object(C);
 
@@ -870,7 +882,7 @@ static int view3d_lasso_select_exec(bContext *C, wmOperator *op)
 {
        ViewContext vc;
        int mcords_tot;
-       int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
+       const int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
        
        if (mcords) {
                short extend, select;
@@ -1553,19 +1565,37 @@ static int mouse_select(bContext *C, const int mval[2], short extend, short dese
 
 typedef struct BoxSelectUserData {
        ViewContext *vc;
-       rcti *rect;
-       int select, pass, done;
+       const rcti *rect;
+       int select;
+
+       /* runtime */
+       int pass;
+       int is_done;
+       int is_change;
 } BoxSelectUserData;
 
-int edge_inside_circle(int centx, int centy, int rad, int x1, int y1, int x2, int y2)
+static void view3d_userdata_boxselect_init(BoxSelectUserData *r_data,
+                                           ViewContext *vc, const rcti *rect, const int select)
+{
+       r_data->vc = vc;
+       r_data->rect = rect;
+       r_data->select = select;
+
+       /* runtime */
+       r_data->pass = 0;
+       r_data->is_done = FALSE;
+       r_data->is_change = FALSE;
+}
+
+int edge_inside_circle(int centx, int centy, int radius, int x1, int y1, int x2, int y2)
 {
-       int radsq = rad * rad;
+       int radius_squared = radius * radius;
 
        /* check points in circle itself */
-       if ((x1 - centx) * (x1 - centx) + (y1 - centy) * (y1 - centy) <= radsq) {
+       if ((x1 - centx) * (x1 - centx) + (y1 - centy) * (y1 - centy) <= radius_squared) {
                return TRUE;
        }
-       else if ((x2 - centx) * (x2 - centx) + (y2 - centy) * (y2 - centy) <= radsq) {
+       else if ((x2 - centx) * (x2 - centx) + (y2 - centy) * (y2 - centy) <= radius_squared) {
                return TRUE;
        }
        else {
@@ -1573,7 +1603,7 @@ int edge_inside_circle(int centx, int centy, int rad, int x1, int y1, int x2, in
                const float v1[2] = {x1, y1};
                const float v2[2] = {x2, y2};
                /* pointdistline */
-               if (dist_squared_to_line_segment_v2(cent, v1, v2) < (float)radsq) {
+               if (dist_squared_to_line_segment_v2(cent, v1, v2) < (float)radius_squared) {
                        return TRUE;
                }
        }
@@ -1617,9 +1647,7 @@ static int do_nurbs_box_select(ViewContext *vc, rcti *rect, int select, int exte
 {
        BoxSelectUserData data;
        
-       data.vc = vc;
-       data.rect = rect;
-       data.select = select;
+       view3d_userdata_boxselect_init(&data, vc, rect, select);
 
        if (extend == 0 && select)
                CU_deselect_all(vc->obedit);
@@ -1642,9 +1670,7 @@ static int do_lattice_box_select(ViewContext *vc, rcti *rect, int select, int ex
 {
        BoxSelectUserData data;
 
-       data.vc = vc;
-       data.rect = rect;
-       data.select = select;
+       view3d_userdata_boxselect_init(&data, vc, rect, select);
 
        if (extend == 0 && select)
                ED_setflagsLatt(vc->obedit, 0);
@@ -1671,7 +1697,7 @@ static void do_mesh_box_select__doSelectEdge(void *userData, BMEdge *eed, int x0
                if (data->pass == 0) {
                        if (edge_fully_inside_rect(data->rect, x0, y0, x1, y1)) {
                                BM_edge_select_set(data->vc->em->bm, eed, data->select);
-                               data->done = TRUE;
+                               data->is_done = TRUE;
                        }
                }
                else {
@@ -1695,11 +1721,7 @@ static int do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int exten
        ToolSettings *ts = vc->scene->toolsettings;
        int bbsel;
        
-       data.vc = vc;
-       data.rect = rect;
-       data.select = select;
-       data.pass = 0;
-       data.done = FALSE;
+       view3d_userdata_boxselect_init(&data, vc, rect, select);
 
        if (extend == 0 && select)
                EDBM_flag_disable_all(vc->em, BM_ELEM_SELECT);
@@ -1724,7 +1746,7 @@ static int do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int exten
                data.pass = 0;
                mesh_foreachScreenEdge(vc, do_mesh_box_select__doSelectEdge, &data, V3D_CLIP_TEST_OFF);
 
-               if (data.done == 0) {
+               if (data.is_done == 0) {
                        data.pass = 1;
                        mesh_foreachScreenEdge(vc, do_mesh_box_select__doSelectEdge, &data, V3D_CLIP_TEST_OFF);
                }
@@ -2182,15 +2204,32 @@ typedef struct CircleSelectUserData {
        short select;
        int mval[2];
        float radius;
+       float radius_squared;
+
+       /* runtime */
+       int is_change;
 } CircleSelectUserData;
 
+static void view3d_userdata_circleselect_init(CircleSelectUserData *r_data,
+                                              ViewContext *vc, const int select, const int mval[2], const float rad)
+{
+       r_data->vc = vc;
+       r_data->select = select;
+       copy_v2_v2_int(r_data->mval, mval);
+       r_data->radius = rad;
+       r_data->radius_squared = rad * rad;
+
+       /* runtime */
+       r_data->is_change = FALSE;
+}
+
 static void mesh_circle_doSelectVert(void *userData, BMVert *eve, int x, int y, int UNUSED(index))
 {
        CircleSelectUserData *data = userData;
-       int mx = x - data->mval[0], my = y - data->mval[1];
-       float r = sqrt(mx * mx + my * my);
+       const float delta[2] = {(float)(x - data->mval[0]),
+                               (float)(y - data->mval[1])};
 
-       if (r <= data->radius) {
+       if (len_squared_v2(delta) <= data->radius_squared) {
                BM_vert_select_set(data->vc->em->bm, eve, data->select);
        }
 }
@@ -2205,10 +2244,10 @@ static void mesh_circle_doSelectEdge(void *userData, BMEdge *eed, int x0, int y0
 static void mesh_circle_doSelectFace(void *userData, BMFace *efa, int x, int y, int UNUSED(index))
 {
        CircleSelectUserData *data = userData;
-       int mx = x - data->mval[0], my = y - data->mval[1];
-       float r = sqrt(mx * mx + my * my);
-       
-       if (r <= data->radius) {
+       const float delta[2] = {(float)(x - data->mval[0]),
+                               (float)(y - data->mval[1])};
+
+       if (len_squared_v2(delta) <= data->radius_squared) {
                BM_face_select_set(data->vc->em->bm, efa, data->select);
        }
 }
@@ -2224,11 +2263,7 @@ static void mesh_circle_select(ViewContext *vc, int select, const int mval[2], f
 
        vc->em = BMEdit_FromObject(vc->obedit);
 
-       data.vc = vc;
-       data.select = select;
-       data.mval[0] = mval[0];
-       data.mval[1] = mval[1];
-       data.radius = rad;
+       view3d_userdata_circleselect_init(&data, vc, select, mval, rad);
 
        if (ts->selectmode & SCE_SELECT_VERTEX) {
                if (bbsel) {
@@ -2299,12 +2334,13 @@ static void paint_vertsel_circle_select(ViewContext *vc, int select, const int m
 static void nurbscurve_circle_doSelect(void *userData, Nurb *UNUSED(nu), BPoint *bp, BezTriple *bezt, int beztindex, int x, int y)
 {
        CircleSelectUserData *data = userData;
-       int mx = x - data->mval[0], my = y - data->mval[1];
-       float r = sqrt(mx * mx + my * my);
        Object *obedit = data->vc->obedit;
        Curve *cu = (Curve *)obedit->data;
 
-       if (r <= data->radius) {
+       const float delta[2] = {(float)(x - data->mval[0]),
+                               (float)(y - data->mval[1])};
+
+       if (len_squared_v2(delta) <= data->radius_squared) {
                if (bp) {
                        bp->f1 = data->select ? (bp->f1 | SELECT) : (bp->f1 & ~SELECT);
 
@@ -2342,6 +2378,7 @@ static void nurbscurve_circle_select(ViewContext *vc, int select, const int mval
        data.mval[1] = mval[1];
        data.radius = rad;
        data.vc = vc;
+       data.is_change = FALSE;
 
        ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
        nurbs_foreachScreenVert(vc, nurbscurve_circle_doSelect, &data);
@@ -2351,10 +2388,10 @@ static void nurbscurve_circle_select(ViewContext *vc, int select, const int mval
 static void latticecurve_circle_doSelect(void *userData, BPoint *bp, int x, int y)
 {
        CircleSelectUserData *data = userData;
-       int mx = x - data->mval[0], my = y - data->mval[1];
-       float r = sqrt(mx * mx + my * my);
+       const float delta[2] = {(float)(x - data->mval[0]),
+                               (float)(y - data->mval[1])};
 
-       if (r <= data->radius) {
+       if (len_squared_v2(delta) <= data->radius_squared) {
                bp->f1 = data->select ? (bp->f1 | SELECT) : (bp->f1 & ~SELECT);
        }
 }
@@ -2362,12 +2399,7 @@ static void lattice_circle_select(ViewContext *vc, int select, const int mval[2]
 {
        CircleSelectUserData data;
 
-       /* set vc-> edit data */
-       
-       data.select = select;
-       data.mval[0] = mval[0];
-       data.mval[1] = mval[1];
-       data.radius = rad;
+       view3d_userdata_circleselect_init(&data, vc, select, mval, rad);
 
        ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
        lattice_foreachScreenVert(vc, latticecurve_circle_doSelect, &data);
@@ -2378,10 +2410,10 @@ static void lattice_circle_select(ViewContext *vc, int select, const int mval[2]
 static short pchan_circle_doSelectJoint(void *userData, bPoseChannel *pchan, int x, int y)
 {
        CircleSelectUserData *data = userData;
-       int mx = x - data->mval[0], my = y - data->mval[1];
-       float r = sqrt(mx * mx + my * my);
-       
-       if (r <= data->radius) {
+       const float delta[2] = {(float)(x - data->mval[0]),
+                               (float)(y - data->mval[1])};
+
+       if (len_squared_v2(delta) <= data->radius_squared) {
                if (data->select)
                        pchan->bone->flag |= BONE_SELECTED;
                else
@@ -2396,13 +2428,8 @@ static void pose_circle_select(ViewContext *vc, int select, const int mval[2], f
        bArmature *arm = vc->obact->data;
        bPose *pose = vc->obact->pose;
        bPoseChannel *pchan;
-       int change = FALSE;
        
-       /* set vc->edit data */
-       data.select = select;
-       data.mval[0] = mval[0];
-       data.mval[1] = mval[1];
-       data.radius = rad;
+       view3d_userdata_circleselect_init(&data, vc, select, mval, rad);
 
        ED_view3d_init_mats_rv3d(vc->obact, vc->rv3d); /* for foreach's screen/vert projection */
        
@@ -2446,14 +2473,14 @@ static void pose_circle_select(ViewContext *vc, int select, const int mval[2], f
                                        pchan->bone->flag |= BONE_SELECTED;
                                else
                                        pchan->bone->flag &= ~BONE_SELECTED;
-                               change = TRUE;
+                               data.is_change = TRUE;
                        }
 
-                       change |= is_point_done;
+                       data.is_change |= is_point_done;
                }
        }
 
-       if (change) {
+       if (data.is_change) {
                WM_main_add_notifier(NC_OBJECT | ND_BONE_SELECT, vc->obact);
        }
 }
@@ -2461,10 +2488,10 @@ static void pose_circle_select(ViewContext *vc, int select, const int mval[2], f
 static short armature_circle_doSelectJoint(void *userData, EditBone *ebone, int x, int y, short head)
 {
        CircleSelectUserData *data = userData;
-       int mx = x - data->mval[0], my = y - data->mval[1];
-       float r = sqrt(mx * mx + my * my);
+       const float delta[2] = {(float)(x - data->mval[0]),
+                               (float)(y - data->mval[1])};
        
-       if (r <= data->radius) {
+       if (len_squared_v2(delta) <= data->radius_squared) {
                if (head) {
                        if (data->select)
                                ebone->flag |= BONE_ROOTSEL;
@@ -2486,13 +2513,8 @@ static void armature_circle_select(ViewContext *vc, int select, const int mval[2
        CircleSelectUserData data;
        bArmature *arm = vc->obedit->data;
        EditBone *ebone;
-       int change = FALSE;
-       
-       /* set vc->edit data */
-       data.select = select;
-       data.mval[0] = mval[0];
-       data.mval[1] = mval[1];
-       data.radius = rad;
+
+       view3d_userdata_circleselect_init(&data, vc, select, mval, rad);
 
        ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
        
@@ -2539,14 +2561,14 @@ static void armature_circle_select(ViewContext *vc, int select, const int mval[2
                                        ebone->flag |= BONE_TIPSEL | BONE_ROOTSEL | BONE_SELECTED;
                                else
                                        ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL);
-                               change = TRUE;
+                               data.is_change = TRUE;
                        }
 
-                       change |= is_point_done;
+                       data.is_change |= is_point_done;
                }
        }
 
-       if (change) {
+       if (data.is_change) {
                ED_armature_sync_selection(arm->edbo);
                ED_armature_validate_active(arm);
                WM_main_add_notifier(NC_OBJECT | ND_BONE_SELECT, vc->obedit);
index 2bcbbc3..be568fc 100644 (file)
@@ -1565,7 +1565,7 @@ static void drawTransformView(const struct bContext *C, ARegion *UNUSED(ar), voi
 }
 
 /* just draw a little warning message in the top-right corner of the viewport to warn that autokeying is enabled */
-static void drawAutoKeyWarning(const struct bContext *C, TransInfo *t, ARegion *ar)
+static void drawAutoKeyWarning(TransInfo *t, ARegion *ar)
 {
        int show_warning;
        
@@ -1610,7 +1610,7 @@ static void drawAutoKeyWarning(const struct bContext *C, TransInfo *t, ARegion *
        }
 }
 
-static void drawTransformPixel(const struct bContext *C, ARegion *ar, void *arg)
+static void drawTransformPixel(const struct bContext *UNUSED(C), ARegion *ar, void *arg)
 {      
        TransInfo *t = arg;
        Scene *scene = t->scene;
@@ -1618,7 +1618,7 @@ static void drawTransformPixel(const struct bContext *C, ARegion *ar, void *arg)
        
        /* draw autokeyframing hint in the corner */
        if (ob && autokeyframe_cfra_can_key(scene, &ob->id)) {
-               drawAutoKeyWarning(C, t, ar);
+               drawAutoKeyWarning(t, ar);
        }       
 }
 
index 70f2bf7..f732808 100644 (file)
@@ -2745,7 +2745,7 @@ static void UV_OT_circle_select(wmOperatorType *ot)
 
 /* ******************** lasso select operator **************** */
 
-static int do_lasso_select_mesh_uv(bContext *C, int mcords[][2], short moves, short select)
+static int do_lasso_select_mesh_uv(bContext *C, const int mcords[][2], short moves, short select)
 {
        Image *ima = CTX_data_edit_image(C);
        ARegion *ar = CTX_wm_region(C);
@@ -2819,7 +2819,7 @@ 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 mcords_tot;
-       int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
+       const int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot);
 
        if (mcords) {
                short select;
index ac05331..e7b7f67 100644 (file)
@@ -273,7 +273,7 @@ int                 WM_gesture_lines_cancel(struct bContext *C, struct wmOperator *op);
 int                    WM_gesture_lasso_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
 int                    WM_gesture_lasso_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
 int                    WM_gesture_lasso_cancel(struct bContext *C, struct wmOperator *op);
-int       (*WM_gesture_lasso_path_to_array(struct bContext *C, struct wmOperator *op, int *mcords_tot))[2];
+const int (*WM_gesture_lasso_path_to_array(struct bContext *C, struct wmOperator *op, int *mcords_tot))[2];
 int                    WM_gesture_straightline_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
 int                    WM_gesture_straightline_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
 int                    WM_gesture_straightline_cancel(struct bContext *C, struct wmOperator *op);
index 313fc0a..9de3c15 100644 (file)
@@ -2727,7 +2727,7 @@ int WM_gesture_lines_cancel(bContext *C, wmOperator *op)
  *
  * caller must free.
  */
-int (*WM_gesture_lasso_path_to_array(bContext *UNUSED(C), wmOperator *op, int *mcords_tot))[2]
+const int (*WM_gesture_lasso_path_to_array(bContext *UNUSED(C), wmOperator *op, int *mcords_tot))[2]
 {
        PropertyRNA *prop = RNA_struct_find_property(op->ptr, "path");
        int (*mcords)[2] = NULL;
@@ -2757,7 +2757,8 @@ int (*WM_gesture_lasso_path_to_array(bContext *UNUSED(C), wmOperator *op, int *m
                *mcords_tot = 0;
        }
 
-       return mcords;
+       /* cast for 'const' */
+       return (const int (*)[2])mcords;
 }
 
 #if 0