[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37968] branches/soc-2011-onion/source/ blender/editors/uvedit: smart stitch - my bug spray got two of them, more to come

Antony Riakiotakis kalast at gmail.com
Thu Jun 30 03:30:38 CEST 2011


Revision: 37968
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37968
Author:   psy-fi
Date:     2011-06-30 01:30:35 +0000 (Thu, 30 Jun 2011)
Log Message:
-----------
smart stitch - my bug spray got two of them, more to come

Modified Paths:
--------------
    branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c
    branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c

Modified: branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c	2011-06-30 01:13:15 UTC (rev 37967)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c	2011-06-30 01:30:35 UTC (rev 37968)
@@ -877,7 +877,7 @@
 		else
 		{
 			/* draw edge preview */
-			glDrawArrays(GL_LINES, 0, stitch_preview->numOfOrig);
+			glDrawArrays(GL_LINES, 0, 2*stitch_preview->numOfOrig);
 		}
 		glPopClientAttrib();
 		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

Modified: branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c	2011-06-30 01:13:15 UTC (rev 37967)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c	2011-06-30 01:30:35 UTC (rev 37968)
@@ -1393,23 +1393,20 @@
 					/****************** Edge stitching case *************************/
 					} else
 					{
-						char edgeSelFlag = TF_SEL_MASK(i) | TF_SEL_MASK((i+1)%vertsPerFace);
-
-						/* need another one of these for each of the 2 verts*/
-						UvElement **commonVertMaps2 = MEM_mallocN(state->em->totface*sizeof(UvElement *), "commonVertMaps2");
-
 						/* Is this edge selected? */
-						if(mt->flag & edgeSelFlag)
+						if(mt->flag & TF_SEL_MASK(i) && mt->flag & TF_SEL_MASK((i+1)%vertsPerFace))
 						{
 							EditVert *v1, *v2;
 							UvElement *el_iter, *element2;
 							float uv1[2][2];
-							int nverts;
+							int nverts, stack_iter;
 							int stackSize = 0;
 							int index1, index2;
 							UVVertAverage uv_average_tmp[2];
+							/* need another one of these for each of the 2 verts*/
+							UvElement **commonVertMaps2 = MEM_mallocN(state->em->totface*sizeof(UvElement *), "commonVertMaps2");
 
-							memset(uv_average_tmp, sizeof(uv_average_tmp), 0);
+							memset(uv_average_tmp, 0, sizeof(uv_average_tmp));
 
 							v1 = *(&editFace->v1 + i);
 							v2 = *(&editFace->v1 + (i + 1)%vertsPerFace);
@@ -1543,14 +1540,14 @@
 									}
 								}
 
-								for(; stackSize > -1; stackSize--)
+								for(stack_iter = 0; stack_iter < stackSize; stack_iter++)
 								{
 
-									index1 = commonVertMaps[stackSize] - vmap->buf, index2 = commonVertMaps2[stackSize] - vmap->buf;
-									efa = commonVertMaps[stackSize]->face;
+									index1 = commonVertMaps[stack_iter] - vmap->buf, index2 = commonVertMaps2[stack_iter] - vmap->buf;
+									efa = commonVertMaps[stack_iter]->face;
 
-									commonVertMaps[stackSize]->flag |= STITCH_STITCHABLE;
-									commonVertMaps2[stackSize]->flag |= STITCH_STITCHABLE;
+									commonVertMaps[stack_iter]->flag |= STITCH_STITCHABLE;
+									commonVertMaps2[stack_iter]->flag |= STITCH_STITCHABLE;
 
 									uv_average[index1].count += uv_average_tmp[0].count;
 									uv_average[index1].uv[0] += uv_average_tmp[0].uv[0];
@@ -1560,6 +1557,8 @@
 									uv_average[index2].uv[0] += uv_average_tmp[1].uv[0];
 									uv_average[index2].uv[1] += uv_average_tmp[1].uv[1];
 
+									preview->numOfOrig++;
+
 									if(efa->tmp.l == -1)
 									{
 										if(efa->v4)
@@ -1573,8 +1572,8 @@
 									}
 								}
 							}
+							MEM_freeN(commonVertMaps2);
 						}
-						MEM_freeN(commonVertMaps2);
 					}
 				}
 			}
@@ -1627,13 +1626,13 @@
 					bufferIterator++;
 				} else if(element->flag & STITCH_EDGE_PREVIEW){
 					int nverts = (efa->v4)? 4 : 3;
-					preview->previewOrig[bufferIterator*2] = mt->uv[element->tfindex][0];
-					preview->previewOrig[bufferIterator*2 + 1] = mt->uv[element->tfindex][1];
-					preview->previewOrig[bufferIterator*2 + 2] = mt->uv[(element->tfindex + 1)%nverts][0];
-					preview->previewOrig[bufferIterator*2 + 3] = mt->uv[(element->tfindex + 1)%nverts][1];
+					preview->previewOrig[bufferIterator*4] = mt->uv[element->tfindex][0];
+					preview->previewOrig[bufferIterator*4 + 1] = mt->uv[element->tfindex][1];
+					preview->previewOrig[bufferIterator*4 + 2] = mt->uv[(element->tfindex + 1)%nverts][0];
+					preview->previewOrig[bufferIterator*4 + 3] = mt->uv[(element->tfindex + 1)%nverts][1];
 
-					preview->previewOrigColors[bufferIterator] = 0x0000FF00;
-					preview->previewOrigColors[bufferIterator + 1] = 0x0000FF00;
+					preview->previewOrigColors[bufferIterator*2] = 0x0000FF00;
+					preview->previewOrigColors[bufferIterator*2 + 1] = 0x0000FF00;
 					bufferIterator++;
 				}
 				if(efa->v4){
@@ -1660,13 +1659,13 @@
 					bufferIterator++;
 				} else if(element->flag & STITCH_EDGE_PREVIEW){
 					int nverts = (efa->v4)? 4 : 3;
-					preview->previewOrig[bufferIterator*2] = mt->uv[element->tfindex][0];
-					preview->previewOrig[bufferIterator*2 + 1] = mt->uv[element->tfindex][1];
-					preview->previewOrig[bufferIterator*2 + 2] = mt->uv[(element->tfindex + 1)%nverts][0];
-					preview->previewOrig[bufferIterator*2 + 3] = mt->uv[(element->tfindex + 1)%nverts][1];
+					preview->previewOrig[bufferIterator*4] = mt->uv[element->tfindex][0];
+					preview->previewOrig[bufferIterator*4 + 1] = mt->uv[element->tfindex][1];
+					preview->previewOrig[bufferIterator*4 + 2] = mt->uv[(element->tfindex + 1)%nverts][0];
+					preview->previewOrig[bufferIterator*4 + 3] = mt->uv[(element->tfindex + 1)%nverts][1];
 
-					preview->previewOrigColors[bufferIterator] = 0x0000FF00;
-					preview->previewOrigColors[bufferIterator + 1] = 0x0000FF00;
+					preview->previewOrigColors[bufferIterator*2] = 0x000000FF;
+					preview->previewOrigColors[bufferIterator*2 + 1] = 0x000000FF;
 					bufferIterator++;
 				}
 				element->flag = 0;
@@ -1718,7 +1717,7 @@
 	stitch_state->use_limit = RNA_boolean_get(op->ptr, "use_limit");
 	stitch_state->limitDist = RNA_float_get(op->ptr, "limit");
 	stitch_state->em = em = BKE_mesh_get_editmesh((Mesh*)obedit->data);
-	stitch_state->mode = VERT_STITCH;
+	stitch_state->mode = EDGE_STITCH;
 
 	stitch_state->vmap = EM_make_uv_vert_map2(stitch_state->em, 1, limit);
 




More information about the Bf-blender-cvs mailing list