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);
 

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to