[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18175] branches/blender2.5/blender/source /blender/editors: 2.5

Ton Roosendaal ton at blender.org
Tue Dec 30 17:03:29 CET 2008


Revision: 18175
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18175
Author:   ton
Date:     2008-12-30 17:03:29 +0100 (Tue, 30 Dec 2008)

Log Message:
-----------
2.5

EditMesh: further cleanup, made derivedmesh itterator functions
work by gathering all related data in local ViewContext struct.
(scene, editmesh, region, view3d, obedit).
Also removed bad inclusion of view3d_intern.h in mesh module.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
    branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh.h
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_loop.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_view.c

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h	2008-12-30 13:46:20 UTC (rev 18174)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h	2008-12-30 16:03:29 UTC (rev 18175)
@@ -29,6 +29,8 @@
 #define ED_MESH_H
 
 struct View3D;
+struct ARegion;
+struct EditMesh;
 
 // edge and face flag both
 #define EM_FGON		2
@@ -51,25 +53,36 @@
 #define B_JOINTRIA_MAT		0X1000
 
 
+/* especially for derivedmesh drawing callbacks */
+typedef struct ViewContext {
+	Scene *scene;
+	Object *obact;
+	Object *obedit;
+	struct ARegion *ar;
+	struct View3D *v3d;
+	struct EditMesh *em;
+} ViewContext;
+
+
 /* editmesh.c */
 
-void		EM_init_index_arrays(EditMesh *em, int forVert, int forEdge, int forFace);
+void		EM_init_index_arrays(struct EditMesh *em, int forVert, int forEdge, int forFace);
 void		EM_free_index_arrays(void);
 EditVert	*EM_get_vert_for_index(int index);
 EditEdge	*EM_get_edge_for_index(int index);
 EditFace	*EM_get_face_for_index(int index);
-int			EM_texFaceCheck(EditMesh *em);
-int			EM_vertColorCheck(EditMesh *em);
+int			EM_texFaceCheck(struct EditMesh *em);
+int			EM_vertColorCheck(struct EditMesh *em);
 
 
 /* editmesh_lib.c */
 
-EditFace	*EM_get_actFace(EditMesh *em, int sloppy);
+EditFace	*EM_get_actFace(struct EditMesh *em, int sloppy);
 
 void		EM_select_edge(EditEdge *eed, int sel);
-void		EM_select_face_fgon(EditMesh *em, EditFace *efa, int val);
-void		EM_selectmode_flush(EditMesh *em);
-void		EM_deselect_flush(EditMesh *em);
+void		EM_select_face_fgon(struct EditMesh *em, EditFace *efa, int val);
+void		EM_selectmode_flush(struct EditMesh *em);
+void		EM_deselect_flush(struct EditMesh *em);
 
 
 

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2008-12-30 13:46:20 UTC (rev 18174)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2008-12-30 16:03:29 UTC (rev 18175)
@@ -31,8 +31,14 @@
 /* ********* exports for space_view3d/ module ********** */
 struct ARegion;
 struct View3D;
+struct ViewContext;
+struct BPoint;
+struct Nurb;
+struct BezTriple;
+struct EditVert;
+struct EditEdge;
+struct EditFace;
 
-
 float *give_cursor(Scene *scene, View3D *v3d);
 
 void initgrabz(struct View3D *v3d, float x, float y, float z);
@@ -52,5 +58,17 @@
 void viewline(struct ARegion *ar, struct View3D *v3d, short mval[2], float ray_start[3], float ray_end[3]);
 void viewray(struct ARegion *ar, struct View3D *v3d, short mval[2], float ray_start[3], float ray_normal[3]);
 
+/* drawobject.c itterators */
+void mesh_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct EditVert *eve, int x, int y, int index), void *userData, int clipVerts);
+void mesh_foreachScreenEdge(struct ViewContext *vc, void (*func)(void *userData, struct EditEdge *eed, int x0, int y0, int x1, int y1, int index), void *userData, int clipVerts);
+void mesh_foreachScreenFace(struct ViewContext *vc, void (*func)(void *userData, struct EditFace *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);
+
+int view3d_test_clipping(struct View3D *v3d, float *vec);
+void view3d_align_axis_to_vector(struct View3D *v3d, int axisidx, float vec[3]);
+
+
+
 #endif /* ED_VIEW3D_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh.c	2008-12-30 13:46:20 UTC (rev 18174)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh.c	2008-12-30 16:03:29 UTC (rev 18175)
@@ -54,11 +54,11 @@
 #include "BLI_dynstr.h"
 #include "BLI_rand.h"
 
-#include "BKE_DerivedMesh.h"
 #include "BKE_cloth.h"
+#include "BKE_context.h"
 #include "BKE_customdata.h"
-#include "BKE_context.h"
 #include "BKE_depsgraph.h"
+#include "BKE_DerivedMesh.h"
 #include "BKE_global.h"
 #include "BKE_key.h"
 #include "BKE_library.h"
@@ -2188,3 +2188,15 @@
 	return 0;
 }
 
+
+void em_setup_viewcontext(bContext *C, ViewContext *vc)
+{
+	memset(vc, 0, sizeof(ViewContext));
+	vc->ar= CTX_wm_region(C);
+	vc->scene= CTX_data_scene(C);
+	vc->v3d= (View3D *)CTX_wm_space_data(C);
+	vc->obact= vc->scene->basact?vc->scene->basact->object:NULL;
+	vc->obedit= G.obedit; // XXX
+	vc->em= NULL; // XXX
+}
+

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh.h	2008-12-30 13:46:20 UTC (rev 18174)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh.h	2008-12-30 16:03:29 UTC (rev 18175)
@@ -32,7 +32,7 @@
 #ifndef EDITMESH_H
 #define EDITMESH_H
 
-struct View3D;
+struct bContext;
 
 #define TEST_EDITMESH	if(G.obedit==0) return; /* layer test XXX */
 
@@ -98,6 +98,8 @@
 int editface_containsVert(struct EditFace *efa, struct EditVert *eve);
 int editface_containsEdge(struct EditFace *efa, struct EditEdge *eed);
 
+void em_setup_viewcontext(struct bContext *C, ViewContext *vc);
+
 /* ******************* editmesh_add.c */
 
 
@@ -167,7 +169,7 @@
 
 
 /* ******************* editmesh_mods.c */
-extern EditEdge *findnearestedge(struct View3D *v3d, EditMesh *em, int *dist);
+extern EditEdge *findnearestedge(ViewContext *vc, int *dist);
 extern void EM_automerge(int update);
 void editmesh_select_by_material(EditMesh *em, int index);
 void righthandfaces(EditMesh *em, int select);	/* makes faces righthand turning */
@@ -182,7 +184,7 @@
  * 		if 0, unselected vertice are given the bias
  * strict: if 1, the vertice corresponding to the sel parameter are ignored and not just biased 
  */
-extern EditVert *findnearestvert(struct View3D *v3d, EditMesh *em, int *dist, short sel, short strict);
+extern EditVert *findnearestvert(ViewContext *vc, int *dist, short sel, short strict);
 
 
 /* ******************* editmesh_tools.c */

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_loop.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_loop.c	2008-12-30 13:46:20 UTC (rev 18174)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_loop.c	2008-12-30 16:03:29 UTC (rev 18175)
@@ -195,7 +195,7 @@
 }
 void CutEdgeloop(EditMesh *em, int numcuts)
 {
-	View3D *v3d= NULL; // XXX
+	ViewContext vc; // XXX
 	EditEdge *nearest=NULL, *eed;
 	float fac;
 	int keys = 0, holdnum=0, selectmode, dist;
@@ -219,7 +219,7 @@
 			mvalo[0] = mval[0];
 			mvalo[1] = mval[1];
 			dist= 50;
-			nearest = findnearestedge(v3d, em, &dist);	// returns actual distance in dist
+			nearest = findnearestedge(&vc, &dist);	// returns actual distance in dist
 //			scrarea_do_windraw(curarea);	// after findnearestedge, backbuf!
 			
 			sprintf(msg,"Number of Cuts: %d",numcuts);

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c	2008-12-30 13:46:20 UTC (rev 18174)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c	2008-12-30 16:03:29 UTC (rev 18175)
@@ -57,6 +57,7 @@
 #include "BLI_editVert.h"
 #include "BLI_rand.h"
 
+#include "BKE_context.h"
 #include "BKE_displist.h"
 #include "BKE_depsgraph.h"
 #include "BKE_DerivedMesh.h"
@@ -74,6 +75,7 @@
 
 #include "ED_multires.h"
 #include "ED_mesh.h"
+#include "ED_view3d.h"
 
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
@@ -82,12 +84,6 @@
 
 #include "BLO_sys_types.h" // for intptr_t support
 
-/* XXX ONLY TO GET COMPILED! XXX
-   the backbuffer select code will move to view3d later */
-#include "../space_view3d/view3d_intern.h"
-
-/* XXX ********************** XXX */
-
 static void *read_backbuf() {return NULL;}
 static int sample_backbuf_rect() {return 0;}
 static int sample_backbuf() {return 0;}
@@ -383,13 +379,12 @@
  * 		if 0, unselected vertice are given the bias
  * strict: if 1, the vertice corresponding to the sel parameter are ignored and not just biased 
  */
-EditVert *findnearestvert(View3D *v3d, EditMesh *em, int *dist, short sel, short strict)
+EditVert *findnearestvert(ViewContext *vc, int *dist, short sel, short strict)
 {
-	ARegion *ar= NULL;	// XXX
 	short mval[2];
 
 // XXX	getmouseco_areawin(mval);
-	if(v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)){
+	if(vc->v3d->drawtype>OB_WIRE && (vc->v3d->flag & V3D_ZBUF_SELECT)){
 		int distance;
 		unsigned int index;
 		EditVert *eve;
@@ -397,7 +392,7 @@
 		if(strict) index = sample_backbuf_rect(mval, 50, em_wireoffs, 0xFFFFFF, &distance, strict, findnearestvert__backbufIndextest); 
 		else index = sample_backbuf_rect(mval, 50, em_wireoffs, 0xFFFFFF, &distance, 0, NULL); 
 		
-		eve = BLI_findlink(&em->verts, index-1);
+		eve = BLI_findlink(&vc->em->verts, index-1);
 		
 		if(eve && distance < *dist) {
 			*dist = distance;
@@ -412,7 +407,7 @@
 		static int lastSelectedIndex=0;
 		static EditVert *lastSelected=NULL;
 
-		if (lastSelected && BLI_findlink(&em->verts, lastSelectedIndex)!=lastSelected) {
+		if (lastSelected && BLI_findlink(&vc->em->verts, lastSelectedIndex)!=lastSelected) {
 			lastSelectedIndex = 0;
 			lastSelected = NULL;
 		}
@@ -427,11 +422,11 @@
 		data.closestIndex = 0;
 
 		data.pass = 0;
-		mesh_foreachScreenVert(ar, v3d, findnearestvert__doClosest, &data, 1);
+		mesh_foreachScreenVert(vc, findnearestvert__doClosest, &data, 1);
 
 		if (data.dist>3) {
 			data.pass = 1;
-			mesh_foreachScreenVert(ar, v3d, findnearestvert__doClosest, &data, 1);
+			mesh_foreachScreenVert(vc, findnearestvert__doClosest, &data, 1);
 		}
 
 		*dist = data.dist;
@@ -459,8 +454,7 @@
 /* note; uses v3d, so needs active 3d window */
 static void findnearestedge__doClosest(void *userData, EditEdge *eed, int x0, int y0, int x1, int y1, int index)
 {
-	View3D *v3d; /* XXX */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list