[Bf-blender-cvs] [0ca6fe7] soc-2016-uv_tools: Adding PEDGE_DIAG tag to diagonal edges of quads (parametrizer data structures are triangle only)

Phil Gosch noreply at git.blender.org
Mon Jun 6 19:57:49 CEST 2016


Commit: 0ca6fe7e528275009cd70cc943daed50559b180a
Author: Phil Gosch
Date:   Mon Jun 6 19:56:02 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rB0ca6fe7e528275009cd70cc943daed50559b180a

Adding PEDGE_DIAG tag to diagonal edges of quads (parametrizer data structures are triangle only)

===================================================================

M	source/blender/editors/uvedit/uvedit_parametrizer.c

===================================================================

diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 80b6b4f..9e55217 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -104,7 +104,7 @@ typedef struct PVert {
 
 	union PVertUnion {
 		PHashKey key;           /* construct */
-		int id;                 /* abf/lscm matrix index */
+		int id;                 /* abf/lscm matrix index, also used for shortest path computation */
 		float distortion;       /* area smoothing */
 		HeapNode *heaplink;     /* edge collapsing */
 	} u;
@@ -169,7 +169,7 @@ enum PEdgeFlag {
 	PEDGE_COLLAPSE = 64,
 	PEDGE_COLLAPSE_EDGE = 128,
 	PEDGE_COLLAPSE_PAIR = 256,
-	PEDGE_MARKED = 512
+	PEDGE_DIAG = 512 
 };
 
 /* for flipping faces */
@@ -1120,7 +1120,7 @@ static PFace *p_face_add(PHandle *handle)
 
 static PFace *p_face_add_construct(PHandle *handle, ParamKey key, ParamKey *vkeys,
                                    float *co[4], float *uv[4], int i1, int i2, int i3,
-                                   ParamBool *pin, ParamBool *select, int **flag)
+                                   ParamBool *pin, ParamBool *select, int **flag, int diag_edge)
 {
 	PFace *f = p_face_add(handle);
 	PEdge *e1 = f->edge, *e2 = e1->next, *e3 = e2->next;
@@ -1161,6 +1161,29 @@ static PFace *p_face_add_construct(PHandle *handle, ParamKey key, ParamKey *vkey
 	phash_insert(handle->hash_edges, (PHashLink *)e2);
 	phash_insert(handle->hash_edges, (PHashLink *)e3);
 
+	if (diag_edge != -1)
+	{
+		switch (diag_edge) {
+			case 0:
+			{
+				e1->flag |= PEDGE_DIAG;
+				break;
+			}
+			case 1:
+			{
+				e2->flag |= PEDGE_DIAG; 
+				break;
+			}
+			case 2: /* fall through */
+			case 3:
+			{
+				e3->flag |= PEDGE_DIAG;
+				break;
+			}
+			default: break;
+		}
+	}
+
 	return f;
 }
 
@@ -4267,17 +4290,17 @@ void param_face_add(ParamHandle *handle, ParamKey key, int nverts,
 	else if (nverts == 4) {
 		/* quad */
 		if (p_quad_split_direction(phandle, co, vkeys)) {
-			p_face_add_construct(phandle, key, vkeys, co, uv, 0, 1, 2, pin, select, flag);
-			p_face_add_construct(phandle, key, vkeys, co, uv, 0, 2, 3, pin, select, flag);
+			p_face_add_construct(phandle, key, vkeys, co, uv, 0, 1, 2, pin, select, flag, 2);
+			p_face_add_construct(phandle, key, vkeys, co, uv, 0, 2, 3, pin, select, flag, 0);
 		}
 		else {
-			p_face_add_construct(phandle, key, vkeys, co, uv, 0, 1, 3, pin, select, flag);
-			p_face_add_construct(phandle, key, vkeys, co, uv, 1, 2, 3, pin, select, flag);
+			p_face_add_construct(phandle, key, vkeys, co, uv, 0, 1, 3, pin, select, flag, 1);
+			p_face_add_construct(phandle, key, vkeys, co, uv, 1, 2, 3, pin, select, flag, 3);
 		}
 	}
 	else if (!p_face_exists(phandle, vkeys, 0, 1, 2)) {
 		/* triangle */
-		p_face_add_construct(phandle, key, vkeys, co, uv, 0, 1, 2, pin, select, flag);
+		p_face_add_construct(phandle, key, vkeys, co, uv, 0, 1, 2, pin, select, flag, -1);
 	}
 }




More information about the Bf-blender-cvs mailing list