[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