[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