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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to