[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50460] trunk/blender/source/blender/ editors: code cleanup: move vertex and face picking functions into meshtools.c

Campbell Barton ideasman42 at gmail.com
Fri Sep 7 01:50:28 CEST 2012


Revision: 50460
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50460
Author:   campbellbarton
Date:     2012-09-06 23:50:28 +0000 (Thu, 06 Sep 2012)
Log Message:
-----------
code cleanup: move vertex and face picking functions into meshtools.c

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_mesh.h
    trunk/blender/source/blender/editors/mesh/editface.c
    trunk/blender/source/blender/editors/mesh/editmesh_slide.c
    trunk/blender/source/blender/editors/mesh/meshtools.c
    trunk/blender/source/blender/editors/space_view3d/view3d_select.c

Modified: trunk/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_mesh.h	2012-09-06 23:41:03 UTC (rev 50459)
+++ trunk/blender/source/blender/editors/include/ED_mesh.h	2012-09-06 23:50:28 UTC (rev 50460)
@@ -276,6 +276,11 @@
 /* delete the backup, optionally flushing it to an editmesh */
 void EDBM_redo_state_free(struct BMBackup *, struct BMEditMesh *em, int recalctess);
 
+/* mesh_tools.c */
+int ED_mesh_pick_face(struct bContext *C, struct Mesh *me, struct Object *ob, const int mval[2], unsigned int *index, short rect);
+int ED_mesh_pick_vert(struct bContext *C, struct Mesh *me, const int mval[2], unsigned int *index, int size);
+
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/blender/source/blender/editors/mesh/editface.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editface.c	2012-09-06 23:41:03 UTC (rev 50459)
+++ trunk/blender/source/blender/editors/mesh/editface.c	2012-09-06 23:50:28 UTC (rev 50460)
@@ -123,43 +123,6 @@
 	}
 }
 
-/* returns 0 if not found, otherwise 1 */
-static int facesel_face_pick(struct bContext *C, Mesh *me, Object *ob, const int mval[2], unsigned int *index, short rect)
-{
-	Scene *scene = CTX_data_scene(C);
-	ViewContext vc;
-	view3d_set_viewcontext(C, &vc);
-
-	if (!me || me->totpoly == 0)
-		return 0;
-
-	makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH, 0);
-
-	// XXX  if (v3d->flag & V3D_INVALID_BACKBUF) {
-// XXX drawview.c!		check_backbuf();
-// XXX		persp(PERSP_VIEW);
-// XXX  }
-
-	if (rect) {
-		/* sample rect to increase changes of selecting, so that when clicking
-		 * on an edge in the backbuf, we can still select a face */
-
-		int dist;
-		*index = view3d_sample_backbuf_rect(&vc, mval, 3, 1, me->totpoly + 1, &dist, 0, NULL, NULL);
-	}
-	else {
-		/* sample only on the exact position */
-		*index = view3d_sample_backbuf(&vc, mval[0], mval[1]);
-	}
-
-	if ((*index) <= 0 || (*index) > (unsigned int)me->totpoly)
-		return 0;
-
-	(*index)--;
-	
-	return 1;
-}
-
 void paintface_hide(Object *ob, const int unselected)
 {
 	Mesh *me;
@@ -331,7 +294,7 @@
 	if (mode == 0 || mode == 1) {
 		/* XXX - Causes glitches, not sure why */
 #if 0
-		if (!facesel_face_pick(C, me, mval, &index, 1))
+		if (!ED_mesh_pick_face(C, me, mval, &index, 1))
 			return;
 #endif
 	}
@@ -518,7 +481,7 @@
 	/* Get the face under the cursor */
 	me = BKE_mesh_from_object(ob);
 
-	if (!facesel_face_pick(C, me, ob, mval, &index, 1))
+	if (!ED_mesh_pick_face(C, me, ob, mval, &index, 1))
 		return 0;
 	
 	if (index >= me->totpoly)

Modified: trunk/blender/source/blender/editors/mesh/editmesh_slide.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_slide.c	2012-09-06 23:41:03 UTC (rev 50459)
+++ trunk/blender/source/blender/editors/mesh/editmesh_slide.c	2012-09-06 23:50:28 UTC (rev 50460)
@@ -749,10 +749,13 @@
 
 	return OPERATOR_FINISHED;
 }
+
+#if 0
 static int edbm_vertex_slide_exec(bContext *C, wmOperator *op)
 {
 	return edbm_vertex_slide_exec_ex(C, op, TRUE);
 }
+#endif
 
 void MESH_OT_vert_slide(wmOperatorType *ot)
 {

Modified: trunk/blender/source/blender/editors/mesh/meshtools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/meshtools.c	2012-09-06 23:41:03 UTC (rev 50459)
+++ trunk/blender/source/blender/editors/mesh/meshtools.c	2012-09-06 23:50:28 UTC (rev 50460)
@@ -1146,3 +1146,82 @@
 	
 	return mirrorfaces;
 }
+
+/* selection, vertex and face */
+/* returns 0 if not found, otherwise 1 */
+
+/**
+ * Face selection in object mode,
+ * currently only weight-paint and vertex-paint use this.
+ *
+ * \return boolean TRUE == Found
+ */
+int ED_mesh_pick_face(bContext *C, Mesh *me, Object *ob, const int mval[2], unsigned int *index, short rect)
+{
+	Scene *scene = CTX_data_scene(C);
+	ViewContext vc;
+	view3d_set_viewcontext(C, &vc);
+
+	if (!me || me->totpoly == 0)
+		return 0;
+
+	makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH, 0);
+
+	// XXX  if (v3d->flag & V3D_INVALID_BACKBUF) {
+// XXX drawview.c!		check_backbuf();
+// XXX		persp(PERSP_VIEW);
+// XXX  }
+
+	if (rect) {
+		/* sample rect to increase changes of selecting, so that when clicking
+		 * on an edge in the backbuf, we can still select a face */
+
+		int dist;
+		*index = view3d_sample_backbuf_rect(&vc, mval, 3, 1, me->totpoly + 1, &dist, 0, NULL, NULL);
+	}
+	else {
+		/* sample only on the exact position */
+		*index = view3d_sample_backbuf(&vc, mval[0], mval[1]);
+	}
+
+	if ((*index) <= 0 || (*index) > (unsigned int)me->totpoly)
+		return 0;
+
+	(*index)--;
+
+	return 1;
+}
+
+/**
+ * Vertex selection in object mode,
+ * currently only weight paint uses this.
+ *
+ * \return boolean TRUE == Found
+ */
+int ED_mesh_pick_vert(bContext *C, Mesh *me, const int mval[2], unsigned int *index, int size)
+{
+	ViewContext vc;
+	view3d_set_viewcontext(C, &vc);
+
+	if (!me || me->totvert == 0)
+		return 0;
+
+	if (size > 0) {
+		/* sample rect to increase changes of selecting, so that when clicking
+		 * on an face in the backbuf, we can still select a vert */
+
+		int dist;
+		*index = view3d_sample_backbuf_rect(&vc, mval, size, 1, me->totvert + 1, &dist, 0, NULL, NULL);
+	}
+	else {
+		/* sample only on the exact position */
+		*index = view3d_sample_backbuf(&vc, mval[0], mval[1]);
+	}
+
+	if ((*index) <= 0 || (*index) > (unsigned int)me->totvert)
+		return 0;
+
+	(*index)--;
+
+	return 1;
+}

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_select.c	2012-09-06 23:41:03 UTC (rev 50459)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_select.c	2012-09-06 23:50:28 UTC (rev 50460)
@@ -2027,36 +2027,6 @@
 	WM_operator_properties_gesture_border(ot, TRUE);
 }
 
-/* much like facesel_face_pick()*/
-/* returns 0 if not found, otherwise 1 */
-static int vertsel_vert_pick(struct bContext *C, Mesh *me, const int mval[2], unsigned int *index, int size)
-{
-	ViewContext vc;
-	view3d_set_viewcontext(C, &vc);
-
-	if (!me || me->totvert == 0)
-		return 0;
-
-	if (size > 0) {
-		/* sample rect to increase changes of selecting, so that when clicking
-		 * on an face in the backbuf, we can still select a vert */
-
-		int dist;
-		*index = view3d_sample_backbuf_rect(&vc, mval, size, 1, me->totvert + 1, &dist, 0, NULL, NULL);
-	}
-	else {
-		/* sample only on the exact position */
-		*index = view3d_sample_backbuf(&vc, mval[0], mval[1]);
-	}
-
-	if ((*index) <= 0 || (*index) > (unsigned int)me->totvert)
-		return 0;
-
-	(*index)--;
-	
-	return 1;
-}
-
 /* mouse selection in weight paint */
 /* gets called via generic mouse select operator */
 static int mouse_weight_paint_vertex_select(bContext *C, const int mval[2], short extend, short deselect, short toggle, Object *obact)
@@ -2065,7 +2035,7 @@
 	unsigned int index = 0;
 	MVert *mv;
 
-	if (vertsel_vert_pick(C, me, mval, &index, 50)) {
+	if (ED_mesh_pick_vert(C, me, mval, &index, 50)) {
 		mv = me->mvert + index;
 		if (extend) {
 			mv->flag |= SELECT;




More information about the Bf-blender-cvs mailing list