svn merge ^/trunk/blender -r42361:42372
authorCampbell Barton <ideasman42@gmail.com>
Sat, 3 Dec 2011 21:01:26 +0000 (21:01 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 3 Dec 2011 21:01:26 +0000 (21:01 +0000)
1  2 
CMakeLists.txt
source/blender/editors/space_view3d/drawobject.c

diff --cc CMakeLists.txt
Simple merge
index 5a10fa50c8ab63b3287d7a4de488708cf2109f9a,36f6e5c6ff781fca0aa5c741f4b667070c5cc44e..b420fa6c02f50d77ff7f76979680eddfe783c6da
@@@ -1923,11 -1933,15 +1937,14 @@@ static void mesh_foreachScreenVert__map
        }
  }
  
- void mesh_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, BMVert *eve, int x, int y, int index), void *userData, eV3DClipTest clipVerts)
+ void mesh_foreachScreenVert(
+         ViewContext *vc,
 -        void (*func)(void *userData, EditVert *eve, int x, int y, int index),
++        void (*func)(void *userData, BMVert *eve, int x, int y, int index),
+         void *userData, eV3DClipTest clipVerts)
  {
 -      struct { void (*func)(void *userData, EditVert *eve, int x, int y, int index);
 -                   void *userData; ViewContext vc; eV3DClipTest clipVerts; } data;
 -
 -      DerivedMesh *dm = editmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH);
 +      struct { void (*func)(void *userData, BMVert *eve, int x, int y, int index);
 +               void *userData; ViewContext vc; eV3DClipTest clipVerts; float pmat[4][4], vmat[4][4]; } data;
 +      DerivedMesh *dm = editbmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH);
        
        data.vc= *vc;
        data.func = func;
@@@ -2013,11 -2021,14 +2030,14 @@@ static void mesh_foreachScreenEdge__map
        }
  }
  
- void mesh_foreachScreenEdge(ViewContext *vc, void (*func)(void *userData, BMEdge *eed, int x0, int y0, int x1, int y1, int index), void *userData, eV3DClipTest clipVerts)
+ void mesh_foreachScreenEdge(
+         ViewContext *vc,
 -        void (*func)(void *userData, EditEdge *eed, int x0, int y0, int x1, int y1, int index),
++        void (*func)(void *userData, BMEdge *eed, int x0, int y0, int x1, int y1, int index),
+         void *userData, eV3DClipTest clipVerts)
  {
 -      struct { void (*func)(void *userData, EditEdge *eed, int x0, int y0, int x1, int y1, int index);
 -                   void *userData; ViewContext vc; eV3DClipTest clipVerts; } data;
 -      DerivedMesh *dm = editmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH);
 +      struct { void (*func)(void *userData, BMEdge *eed, int x0, int y0, int x1, int y1, int index);
 +               void *userData; ViewContext vc; int clipVerts; float pmat[4][4], vmat[4][4]; } data;
 +      DerivedMesh *dm = editbmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH);
  
        data.vc= *vc;
        data.func = func;
@@@ -2052,10 -2060,13 +2072,13 @@@ static void mesh_foreachScreenFace__map
        }
  }
  
- void mesh_foreachScreenFace(ViewContext *vc, void (*func)(void *userData, BMFace *efa, int x, int y, int index), void *userData)
+ void mesh_foreachScreenFace(
+         ViewContext *vc,
 -        void (*func)(void *userData, EditFace *efa, int x, int y, int index),
++        void (*func)(void *userData, BMFace *efa, int x, int y, int index),
+         void *userData)
  {
 -      struct { void (*func)(void *userData, EditFace *efa, int x, int y, int index); void *userData; ViewContext vc; } data;
 -      DerivedMesh *dm = editmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH);
 +      struct { void (*func)(void *userData, BMFace *efa, int x, int y, int index); void *userData; ViewContext vc; float pmat[4][4], vmat[4][4]; } data;
 +      DerivedMesh *dm = editbmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH);
  
        data.vc= *vc;
        data.func = func;
@@@ -2820,31 -2766,30 +2846,31 @@@ static int draw_em_fancy__setFaceOpts(v
                return 0;
  }
  
 -static int draw_em_fancy__setGLSLFaceOpts(void *UNUSED(userData), int index)
 +static int draw_em_fancy__setGLSLFaceOpts(void *userData, int index)
  {
 -      EditFace *efa = EM_get_face_for_index(index);
 +      BMFace *efa = EDBM_get_face_for_index(userData, index);
  
 -      return (efa->h==0);
 +      return !BM_TestHFlag(efa, BM_HIDDEN);
  }
  
- static void draw_em_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob,
-                         BMEditMesh *em, DerivedMesh *cageDM, DerivedMesh *finalDM, int dt)
+ static void draw_em_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d,
 -                          Object *ob, EditMesh *em, DerivedMesh *cageDM, DerivedMesh *finalDM, int dt)
++                          Object *ob, BMEditMesh *em, DerivedMesh *cageDM, DerivedMesh *finalDM, int dt)
 +
  {
        Mesh *me = ob->data;
 -      EditFace *efa_act = EM_get_actFace(em, 0); /* annoying but active faces is stored differently */
 -      EditEdge *eed_act = NULL;
 -      EditVert *eve_act = NULL;
 +      BMFace *efa_act = BM_get_actFace(em->bm, 0); /* annoying but active faces is stored differently */
 +      BMEdge *eed_act = NULL;
 +      BMVert *eve_act = NULL;
        
 -      if (em->selected.last) {
 -              EditSelection *ese = em->selected.last;
 +      if (em->bm->selected.last) {
 +              BMEditSelection *ese= em->bm->selected.last;
                /* face is handeled above */
 -              /*if (ese->type == EDITFACE ) {
 -                      efa_act = (EditFace *)ese->data;
 -              } else */ if ( ese->type == EDITEDGE ) {
 -                      eed_act = (EditEdge *)ese->data;
 -              } else if ( ese->type == EDITVERT ) {
 -                      eve_act = (EditVert *)ese->data;
 +              /*if (ese->type == BM_FACE ) {
 +                      efa_act = (BMFace *)ese->data;
 +              } else */ if ( ese->htype == BM_EDGE ) {
 +                      eed_act = (BMEdge *)ese->data;
 +              } else if ( ese->htype == BM_VERT ) {
 +                      eve_act = (BMVert *)ese->data;
                }
        }
        
                        }
                }
                else {
-                       /* 3 floats for position, 3 for normal and times two because the faces may actually be quads instead of triangles */
+                       /* 3 floats for position,
+                        * 3 for normal and times two because the faces may actually be quads instead of triangles */
                        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED);
 -                      
 +
                        glEnable(GL_LIGHTING);
                        glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
 -                      
 -                      finalDM->drawMappedFaces(finalDM, draw_em_fancy__setFaceOpts, GPU_enable_material, NULL, NULL, 0);
 -                      
 +                      finalDM->drawMappedFaces(finalDM, draw_em_fancy__setFaceOpts, GPU_enable_material, NULL, me->edit_btmesh, 0);
 +
                        glFrontFace(GL_CCW);
                        glDisable(GL_LIGHTING);
                }
                }
                if(me->drawflag & ME_DRAW_VNORMALS) {
                        UI_ThemeColor(TH_VNORMAL);
 -                      draw_dm_vert_normals(scene, cageDM);
 +                      draw_dm_vert_normals(em, scene, cageDM);
                }
  
-               if(me->drawflag & (ME_DRAWEXTRA_EDGELEN|ME_DRAWEXTRA_FACEAREA|ME_DRAWEXTRA_FACEANG) && !((v3d->flag2 & V3D_RENDER_OVERRIDE)))
+               if ( (me->drawflag & (ME_DRAWEXTRA_EDGELEN|ME_DRAWEXTRA_FACEAREA|ME_DRAWEXTRA_FACEANG)) &&
+                    !(v3d->flag2 & V3D_RENDER_OVERRIDE))
+               {
                        draw_em_measure_stats(v3d, rv3d, ob, em, &scene->unit);
+               }
        }
  
        if(dt>OB_WIRE) {