Revision: 43142
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43142
Author:   psy-fi
Date:     2012-01-04 20:51:10 +0000 (Wed, 04 Jan 2012)
Log Message:
-----------
Smart stitch: refactoring, remove edge vs vertex mode of stitching, keep only 
vertex. I will develop code to detect rotation shortly for vert stitch so edge 
will be redundant. Also, changed header message.

Modified Paths:
--------------
    branches/soc-2011-onion-uv-tools/source/blender/editors/include/ED_uvedit.h
    branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_draw.c
    
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h
    
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_smart_stitch.c

Modified: 
branches/soc-2011-onion-uv-tools/source/blender/editors/include/ED_uvedit.h
===================================================================
--- branches/soc-2011-onion-uv-tools/source/blender/editors/include/ED_uvedit.h 
2012-01-04 20:11:08 UTC (rev 43141)
+++ branches/soc-2011-onion-uv-tools/source/blender/editors/include/ED_uvedit.h 
2012-01-04 20:51:10 UTC (rev 43142)
@@ -87,8 +87,6 @@
 /* uvedit_buttons.c */
 void ED_uvedit_buttons_register(struct ARegionType *art);
 
-/* uvedit_island_manager.c */
-struct UVIslandManager *ED_get_island_manager_handle(void);
 /* get enable state of island manager */
 int ED_uvedit_island_manager_get_enabled(void);
 /* draw the island manager */

Modified: 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_draw.c
===================================================================
--- 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_draw.c    
    2012-01-04 20:11:08 UTC (rev 43141)
+++ 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_draw.c    
    2012-01-04 20:51:10 UTC (rev 43142)
@@ -893,29 +893,16 @@
 
                glDisable(GL_BLEND);
 
+               /* draw vert preview */
+               glPointSize(pointsize*2.0);
+               UI_ThemeColor4(TH_STITCH_PREVIEW_STITCHABLE);
+               glVertexPointer(2, GL_FLOAT, 0, 
stitch_preview->previewStitchable);
+               glDrawArrays(GL_POINTS, 0, stitch_preview->numOfStitchable);
 
-               if(stitch_preview->mode == VERT_STITCH){
-                       /* draw vert preview */
-                       glPointSize(pointsize*2.0);
-                       UI_ThemeColor4(TH_STITCH_PREVIEW_STITCHABLE);
-                       glVertexPointer(2, GL_FLOAT, 0, 
stitch_preview->previewStitchable);
-                       glDrawArrays(GL_POINTS, 0, 
stitch_preview->numOfStitchable);
+               UI_ThemeColor4(TH_STITCH_PREVIEW_UNSTITCHABLE);
+               glVertexPointer(2, GL_FLOAT, 0, 
stitch_preview->previewUnstitchable);
+               glDrawArrays(GL_POINTS, 0, stitch_preview->numOfUnstitchable);
 
-                       UI_ThemeColor4(TH_STITCH_PREVIEW_UNSTITCHABLE);
-                       glVertexPointer(2, GL_FLOAT, 0, 
stitch_preview->previewUnstitchable);
-                       glDrawArrays(GL_POINTS, 0, 
stitch_preview->numOfUnstitchable);
-               }
-               else
-               {
-                       /* draw edge preview */
-                       UI_ThemeColor4(TH_STITCH_PREVIEW_STITCHABLE);
-                       glVertexPointer(2, GL_FLOAT, 0, 
stitch_preview->previewStitchable);
-                       glDrawArrays(GL_LINES, 0, 
2*stitch_preview->numOfStitchable);
-
-                       UI_ThemeColor4(TH_STITCH_PREVIEW_UNSTITCHABLE);
-                       glVertexPointer(2, GL_FLOAT, 0, 
stitch_preview->previewUnstitchable);
-                       glDrawArrays(GL_LINES, 0, 
2*stitch_preview->numOfUnstitchable);
-               }
                glPopClientAttrib();
                glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
        }

Modified: 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h
===================================================================
--- 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h  
    2012-01-04 20:11:08 UTC (rev 43141)
+++ 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h  
    2012-01-04 20:51:10 UTC (rev 43142)
@@ -41,12 +41,6 @@
 struct wmOperatorType;
 struct UvElementMap;
 
-/*
- * defines for operator stitch modes, usable both for operator and prevewer 
below
- */
-#define VERT_STITCH 0
-#define EDGE_STITCH 1
-
 /* Object that stores display data for previewing before accepting stitching */
 typedef struct StitchPreviewer {
        /* OpenGL requires different calls for Triangles and Quads.

Modified: 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_smart_stitch.c
===================================================================
--- 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_smart_stitch.c
        2012-01-04 20:11:08 UTC (rev 43141)
+++ 
branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_smart_stitch.c
        2012-01-04 20:51:10 UTC (rev 43142)
@@ -210,18 +210,18 @@
 /* This function updates the header of the UV editor when the stitch tool 
updates its settings */
 static void stitch_update_header(StitchState *stitch_state, bContext *C)
 {
-       static char str[] = "Select(V {+Ctrl deselect}) Toggle(T) %c Vertex %c 
Edge, %c Limit(L), %c Snap(S), %c  Midpoints(M), (Ctrl+Wheel/-+)Limit Adjust: 
%.2f, Switch Static Island(I) ";
+       static char str[] = "(S)nap %s, (M)idpoints %s, (L)imit %.2f (Ctrl 
Wheel adjust) %s, Switch (I)sland, shift select vertices";
+
        char msg[256];
        ScrArea *sa= CTX_wm_area(C);
-       char mode = (stitch_state->mode == VERT_STITCH);
 
        if(sa) {
-               sprintf(msg, str, (mode)? '*':' ',
-                               (!mode)? '*':' ',
-                               stitch_state->use_limit?'*':' ',
-                               stitch_state->snapIslands?'*' :' ',
-                               stitch_state->midpoints?'*' :' ' ,
-                               stitch_state->limitDist);
+               sprintf(msg, str,
+                               stitch_state->snapIslands? "On" : "Off",
+                               stitch_state->midpoints? "On": "Off",
+                               stitch_state->limitDist,
+                               stitch_state->use_limit? "On" : "Off");
+
                ED_area_headerprint(sa, msg);
        }
 }
@@ -259,7 +259,7 @@
                if(island_stitch_data[i].addedForPreview){
                        int numOfIslandUVs = 0, j;
                        /* check to avoid divide by 0 */
-                       if(state->mode == EDGE_STITCH){
+                       if(0){
                                island_stitch_data[i].rotation /= 
island_stitch_data[i].numOfEdges;
                                island_stitch_data[i].medianPoint[0] /= 
island_stitch_data[i].numOfEdges;
                                island_stitch_data[i].medianPoint[1] /= 
island_stitch_data[i].numOfEdges;
@@ -274,7 +274,7 @@
                                        efa = element->face;
                                        mt = 
CustomData_em_get(&state->em->fdata, efa->data, CD_MTFACE);
                                        if(final){
-                                               if(state->mode == EDGE_STITCH){
+                                               if(0){
                                                        
stitch_uv_rotate(island_stitch_data[i].rotation, 
island_stitch_data[i].medianPoint, mt->uv[element->tfindex]);
                                                }
                                                mt->uv[element->tfindex][0] += 
island_stitch_data[i].translation[0];
@@ -282,14 +282,14 @@
                                        }
                                        else if(efa->tmp.l != 
STITCH_NO_PREVIEW){
                                                if(efa->v4){
-                                                       if(state->mode == 
EDGE_STITCH){
+                                                       if(0){
                                                                
stitch_uv_rotate(island_stitch_data[i].rotation, 
island_stitch_data[i].medianPoint, &preview->previewQuads[efa->tmp.l + 
2*element->tfindex]);
                                                        }
                                                        
preview->previewQuads[efa->tmp.l + 2*element->tfindex] += 
island_stitch_data[i].translation[0];
                                                        
preview->previewQuads[efa->tmp.l + 2*element->tfindex + 1] += 
island_stitch_data[i].translation[1];
                                                }
                                                else {
-                                                       if(state->mode == 
EDGE_STITCH){
+                                                       if(0){
                                                                
stitch_uv_rotate(island_stitch_data[i].rotation, 
island_stitch_data[i].medianPoint, &preview->previewTris[efa->tmp.l + 
2*element->tfindex]);
                                                        }
                                                        
preview->previewTris[efa->tmp.l + 2*element->tfindex]  += 
island_stitch_data[i].translation[0];
@@ -591,7 +591,7 @@
        /*****************************************
         *  First determine stitchability of uvs *
         *****************************************/
-       if(state->mode == VERT_STITCH){
+       if(1){
                /* Uv Vert case */
                for(i = 0; i < state->selection_size; i++){
                        UvElement *element = (UvElement 
*)state->selection_stack[i];
@@ -767,14 +767,11 @@
                /* Initialize the preview buffers */
                preview->previewQuads = (float 
*)MEM_mallocN(preview->numOfQuads*sizeof(float)*8, "quad_uv_stitch_prev");
                preview->previewTris = (float 
*)MEM_mallocN(preview->numOfTris*sizeof(float)*6, "tri_uv_stitch_prev");
-               if(state->mode == VERT_STITCH){
-                       preview->previewStitchable = (float 
*)MEM_mallocN(preview->numOfStitchable*sizeof(float)*2, 
"stitch_preview_stichable_data");
-                       preview->previewUnstitchable = (float 
*)MEM_mallocN(preview->numOfUnstitchable*sizeof(float)*2, 
"stitch_preview_unstichable_data");
-               } else {
-                       preview->previewStitchable = (float 
*)MEM_mallocN(preview->numOfStitchable*sizeof(float)*4, 
"stitch_preview_stichable_data");
-                       preview->previewUnstitchable = (float 
*)MEM_mallocN(preview->numOfUnstitchable*sizeof(float)*4, 
"stitch_preview_unstichable_data");
-               }
 
+               preview->previewStitchable = (float 
*)MEM_mallocN(preview->numOfStitchable*sizeof(float)*2, 
"stitch_preview_stichable_data");
+               preview->previewUnstitchable = (float 
*)MEM_mallocN(preview->numOfUnstitchable*sizeof(float)*2, 
"stitch_preview_unstichable_data");
+
+
                /* will cause cancel and freeing of all data structures so OK */
                if(!preview->previewQuads || !preview->previewTris || 
!preview->previewStitchable || !preview->previewUnstitchable){
                        return 0;
@@ -794,73 +791,25 @@
                        }
                }
                /* Fill the appropriate preview buffers */
-               if(state->mode == VERT_STITCH){
-                       for(i = 0; i < state->total_separate_uvs; i++){
-                               UvElement *element = (UvElement *)state->uvs[i];
-                               if(element->flag & STITCH_STITCHABLE){
-                                       MTFace *mt;
-                                       efa = element->face;
-                                       mt = 
CustomData_em_get(&state->em->fdata, efa->data, CD_MTFACE);
+               for(i = 0; i < state->total_separate_uvs; i++){
+                       UvElement *element = (UvElement *)state->uvs[i];
+                       if(element->flag & STITCH_STITCHABLE){
+                               MTFace *mt;
+                               efa = element->face;
+                               mt = CustomData_em_get(&state->em->fdata, 
efa->data, CD_MTFACE);
 
-                                       
preview->previewStitchable[stitchBufferIndex*2] = mt->uv[element->tfindex][0];
-                                       
preview->previewStitchable[stitchBufferIndex*2 + 1] = 
mt->uv[element->tfindex][1];
-                                       stitchBufferIndex++;
-                               }
-                               else if(element->flag & STITCH_SELECTED){
-                                       MTFace *mt;
-                                       efa = element->face;
-                                       mt = 
CustomData_em_get(&state->em->fdata, efa->data, CD_MTFACE);
-
-                                       
preview->previewUnstitchable[unstitchBufferIndex*2] = 
mt->uv[element->tfindex][0];
-                                       
preview->previewUnstitchable[unstitchBufferIndex*2 + 1] = 
mt->uv[element->tfindex][1];
-                                       unstitchBufferIndex++;
-                               }
+                               preview->previewStitchable[stitchBufferIndex*2] 
= mt->uv[element->tfindex][0];
+                               preview->previewStitchable[stitchBufferIndex*2 
+ 1] = mt->uv[element->tfindex][1];
+                               stitchBufferIndex++;
                        }
-               }else{
-                       /* Fill the preview buffers with stitchable only uvs */
-                       for(i = 0; i < state->total_edges; i++){
-                               UvEdge edge = state->edges[i];
+                       else if(element->flag & STITCH_SELECTED){
+                               MTFace *mt;
+                               efa = element->face;
+                               mt = CustomData_em_get(&state->em->fdata, 
efa->data, CD_MTFACE);
 
-                               if(edge.flag & STITCH_STITCHABLE){
-                                       MTFace *mt1, *mt2;
-                                       EditFace *efa2;
-
-                                       UvElement *element1 = 
state->uvs[edge.uv1];
-                                       UvElement *element2 = 
state->uvs[edge.uv2];
-
-                                       efa = element1->face;
-                                       efa2 = element2->face;
-
-                                       mt1 = 
CustomData_em_get(&state->em->fdata, efa->data, CD_MTFACE);
-                                       mt2 = 
CustomData_em_get(&state->em->fdata, efa2->data, CD_MTFACE);
-
-                                       
preview->previewStitchable[stitchBufferIndex*4] = mt1->uv[element1->tfindex][0];

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to