[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