[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12139] trunk/blender/source/blender: made active vert/edge/ face draw properly with modifiers applied and made their theme default white .
Campbell Barton
cbarton at metavr.com
Tue Sep 25 05:31:43 CEST 2007
Revision: 12139
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12139
Author: campbellbarton
Date: 2007-09-25 05:31:12 +0200 (Tue, 25 Sep 2007)
Log Message:
-----------
made active vert/edge/face draw properly with modifiers applied and made their theme default white.
removed active face draw in Face/UV (which is now paint mask mode) mode.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h
trunk/blender/source/blender/blenkernel/BKE_blender.h
trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
trunk/blender/source/blender/include/BDR_editface.h
trunk/blender/source/blender/makesdna/DNA_userdef_types.h
trunk/blender/source/blender/python/api2_2x/windowTheme.c
trunk/blender/source/blender/src/drawimage.c
trunk/blender/source/blender/src/drawmesh.c
trunk/blender/source/blender/src/drawobject.c
trunk/blender/source/blender/src/editface.c
trunk/blender/source/blender/src/resources.c
trunk/blender/source/blender/src/usiblender.c
Modified: trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h 2007-09-25 03:31:12 UTC (rev 12139)
@@ -435,5 +435,23 @@
/* determines required DerivedMesh data according to view and edit modes */
CustomDataMask get_viewedit_datamask();
+/* repeate this pattern
+ X000X000
+ 00000000
+ 00X000X0
+ 00000000 */
+
+#define DM_FACE_STIPPLE \
+{ \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0, \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0, \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0, \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0, \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0, \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0, \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0, \
+ 136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0 \
+}
+
#endif
Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h 2007-09-25 03:31:12 UTC (rev 12139)
@@ -44,7 +44,7 @@
struct MemFile;
#define BLENDER_VERSION 245
-#define BLENDER_SUBVERSION 2
+#define BLENDER_SUBVERSION 3
#define BLENDER_MINVERSION 240
#define BLENDER_MINSUBVERSION 0
Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2007-09-25 03:31:12 UTC (rev 12139)
@@ -633,9 +633,10 @@
}
static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors)
{
+ GLubyte act_face_stipple[32*32/8] = DM_FACE_STIPPLE;
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
EditFace *efa;
- int i;
+ int i, draw;
if (emdm->vertexCos) {
EditVert *eve;
@@ -645,7 +646,13 @@
for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) {
int drawSmooth = (efa->flag & ME_SMOOTH);
- if(!setDrawOptions || setDrawOptions(userData, i, &drawSmooth)) {
+ draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, i, &drawSmooth);
+ if(draw) {
+ if (draw==2) { /* enabled with stipple */
+ glEnable(GL_POLYGON_STIPPLE);
+ glPolygonStipple(act_face_stipple);
+ }
+
glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT);
glBegin(efa->v4?GL_QUADS:GL_TRIANGLES);
@@ -668,12 +675,20 @@
}
}
glEnd();
+
+ if (draw==2)
+ glDisable(GL_POLYGON_STIPPLE);
}
}
} else {
for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) {
int drawSmooth = (efa->flag & ME_SMOOTH);
- if(!setDrawOptions || setDrawOptions(userData, i, &drawSmooth)) {
+ draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, i, &drawSmooth);
+ if(draw) {
+ if (draw==2) { /* enabled with stipple */
+ glEnable(GL_POLYGON_STIPPLE);
+ glPolygonStipple(act_face_stipple);
+ }
glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT);
glBegin(efa->v4?GL_QUADS:GL_TRIANGLES);
@@ -696,6 +711,9 @@
}
}
glEnd();
+
+ if (draw==2)
+ glDisable(GL_POLYGON_STIPPLE);
}
}
}
Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2007-09-25 03:31:12 UTC (rev 12139)
@@ -1908,6 +1908,7 @@
}
static void ccgDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors) {
+ GLubyte act_face_stipple[32*32/8] = DM_FACE_STIPPLE;
CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm;
CCGSubSurf *ss = ccgdm->ss;
CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss);
@@ -1924,51 +1925,63 @@
if(faceFlags) drawSmooth = (faceFlags[origIndex*4] & ME_SMOOTH);
else drawSmooth = 1;
-
- if (index!=-1 && (!setDrawOptions || setDrawOptions(userData, index, &drawSmooth))) {
- for (S=0; S<numVerts; S++) {
- VertData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
- if (drawSmooth) {
- glShadeModel(GL_SMOOTH);
- for (y=0; y<gridSize-1; y++) {
- glBegin(GL_QUAD_STRIP);
- for (x=0; x<gridSize; x++) {
- VertData *a = &faceGridData[(y+0)*gridSize + x];
- VertData *b = &faceGridData[(y+1)*gridSize + x];
-
- glNormal3fv(a->no);
- glVertex3fv(a->co);
- glNormal3fv(b->no);
- glVertex3fv(b->co);
+
+ if (index!=-1) {
+ int draw;
+ draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, index, &drawSmooth);
+
+ if (draw) {
+ if (draw==2) {
+ glEnable(GL_POLYGON_STIPPLE);
+ glPolygonStipple(act_face_stipple);
+ }
+
+ for (S=0; S<numVerts; S++) {
+ VertData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S);
+ if (drawSmooth) {
+ glShadeModel(GL_SMOOTH);
+ for (y=0; y<gridSize-1; y++) {
+ glBegin(GL_QUAD_STRIP);
+ for (x=0; x<gridSize; x++) {
+ VertData *a = &faceGridData[(y+0)*gridSize + x];
+ VertData *b = &faceGridData[(y+1)*gridSize + x];
+
+ glNormal3fv(a->no);
+ glVertex3fv(a->co);
+ glNormal3fv(b->no);
+ glVertex3fv(b->co);
+ }
+ glEnd();
}
+ } else {
+ glShadeModel(GL_FLAT);
+ glBegin(GL_QUADS);
+ for (y=0; y<gridSize-1; y++) {
+ for (x=0; x<gridSize-1; x++) {
+ float *a = faceGridData[(y+0)*gridSize + x].co;
+ float *b = faceGridData[(y+0)*gridSize + x + 1].co;
+ float *c = faceGridData[(y+1)*gridSize + x + 1].co;
+ float *d = faceGridData[(y+1)*gridSize + x].co;
+ float a_cX = c[0]-a[0], a_cY = c[1]-a[1], a_cZ = c[2]-a[2];
+ float b_dX = d[0]-b[0], b_dY = d[1]-b[1], b_dZ = d[2]-b[2];
+ float no[3];
+
+ no[0] = b_dY*a_cZ - b_dZ*a_cY;
+ no[1] = b_dZ*a_cX - b_dX*a_cZ;
+ no[2] = b_dX*a_cY - b_dY*a_cX;
+ glNormal3fv(no);
+
+ glVertex3fv(d);
+ glVertex3fv(c);
+ glVertex3fv(b);
+ glVertex3fv(a);
+ }
+ }
glEnd();
}
- } else {
- glShadeModel(GL_FLAT);
- glBegin(GL_QUADS);
- for (y=0; y<gridSize-1; y++) {
- for (x=0; x<gridSize-1; x++) {
- float *a = faceGridData[(y+0)*gridSize + x].co;
- float *b = faceGridData[(y+0)*gridSize + x + 1].co;
- float *c = faceGridData[(y+1)*gridSize + x + 1].co;
- float *d = faceGridData[(y+1)*gridSize + x].co;
- float a_cX = c[0]-a[0], a_cY = c[1]-a[1], a_cZ = c[2]-a[2];
- float b_dX = d[0]-b[0], b_dY = d[1]-b[1], b_dZ = d[2]-b[2];
- float no[3];
-
- no[0] = b_dY*a_cZ - b_dZ*a_cY;
- no[1] = b_dZ*a_cX - b_dX*a_cZ;
- no[2] = b_dX*a_cY - b_dY*a_cX;
- glNormal3fv(no);
-
- glVertex3fv(d);
- glVertex3fv(c);
- glVertex3fv(b);
- glVertex3fv(a);
- }
- }
- glEnd();
}
+ if (draw==2)
+ glDisable(GL_POLYGON_STIPPLE);
}
}
}
Modified: trunk/blender/source/blender/include/BDR_editface.h
===================================================================
--- trunk/blender/source/blender/include/BDR_editface.h 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/include/BDR_editface.h 2007-09-25 03:31:12 UTC (rev 12139)
@@ -38,7 +38,7 @@
struct Mesh;
struct MCol;
-struct MTFace *get_active_mtface(struct EditFace **efa, struct MCol **mcol, short partsel);
+struct MTFace *get_active_mtface(struct EditFace **efa, struct MCol **mcol, short sloppy);
void calculate_uv_map(unsigned short mapmode);
void default_uv(float uv[][2], float size);
void make_tfaces(struct Mesh *me);
Modified: trunk/blender/source/blender/makesdna/DNA_userdef_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_userdef_types.h 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/makesdna/DNA_userdef_types.h 2007-09-25 03:31:12 UTC (rev 12139)
@@ -101,7 +101,7 @@
char movie[4], image[4], scene[4], audio[4]; // for sequence editor
char effect[4], plugin[4], transition[4], meta[4];
- char bpad1[4];
+ char editmesh_active[4];
} ThemeSpace;
Modified: trunk/blender/source/blender/python/api2_2x/windowTheme.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/windowTheme.c 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/python/api2_2x/windowTheme.c 2007-09-25 03:31:12 UTC (rev 12139)
@@ -172,6 +172,7 @@
ELSEIF_TSP_RGBA( edge_select )
ELSEIF_TSP_RGBA( edge_seam )
ELSEIF_TSP_RGBA( edge_sharp )
+ ELSEIF_TSP_RGBA( editmesh_active )
ELSEIF_TSP_RGBA( edge_facesel )
ELSEIF_TSP_RGBA( face )
ELSEIF_TSP_RGBA( face_select )
@@ -199,13 +200,13 @@
else if( !strcmp( name, "facedot_size" ) )
attrib = Py_BuildValue( "i", tsp->facedot_size );
else if( !strcmp( name, "__members__" ) )
- attrib = Py_BuildValue("[sssssssssssssssssssssssssssssssssssssssssssssss]", "theme",
+ attrib = Py_BuildValue("[ssssssssssssssssssssssssssssssssssssssssssssssss]", "theme",
"back", "text", "text_hi", "header",
"panel", "shade1", "shade2", "hilite",
"grid", "wire", "select", "lamp", "active",
"group", "group_active",
"transform", "vertex", "vertex_select",
- "edge", "edge_select", "edge_seam", "edge_sharp",
+ "edge", "edge_select", "edge_seam", "edge_sharp", "editmesh_active",
"edge_facesel", "face", "face_select",
"face_dot", "normal", "bone_solid", "bone_pose",
"strip", "strip_select",
Modified: trunk/blender/source/blender/src/drawimage.c
===================================================================
--- trunk/blender/source/blender/src/drawimage.c 2007-09-25 01:33:29 UTC (rev 12138)
+++ trunk/blender/source/blender/src/drawimage.c 2007-09-25 03:31:12 UTC (rev 12139)
@@ -453,7 +453,7 @@
{
MTFace *tface,*activetface = NULL;
EditMesh *em = G.editMesh;
- EditFace *efa;
+ EditFace *efa, *efa_act;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list