Commit: c80c28a4da0bcf2278fbb5519845679fe93c948a
Author: Phil Gosch
Date:   Tue Jul 5 12:57:28 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rBc80c28a4da0bcf2278fbb5519845679fe93c948a

Inner fit polygon computation

Could be cleaner by having ConvexHull store relative bounds width/height, but 
should do for now

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

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 bcf7112..e0a899a 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -4900,6 +4900,45 @@ PConvexHull 
*p_convex_hull_reversed_direction(PConvexHull *hull)
        return conv_hull_inv;
 }
 
+PNoFitPolygon *p_inner_fit_polygon_create(PConvexHull *item)
+{
+       PNoFitPolygon *nfp = (PNoFitPolygon *)MEM_callocN(sizeof(*nfp), 
"PNoFitPolygon");
+       /* Simplification, since we're not dealing with arbitrary shaped outer 
bounds */
+       /* we can assume the inner fit polygon to always be a rectangle         
      */
+       nfp->nverts = 4;
+       PVert **points = (PVert **)MEM_mallocN(sizeof(PVert *) * nfp->nverts, 
"PNFPPoints");
+       nfp->final_pos = (PPointUV **)MEM_callocN(sizeof(*nfp->final_pos) * 
nfp->nverts, "PNFPFinalPos");
+       int i, j, offset;
+
+       PPointUV *p1 = (PPointUV *)MEM_callocN(sizeof(*p1), "PPointUV");
+       PPointUV *p2 = (PPointUV *)MEM_callocN(sizeof(*p2), "PPointUV");
+       PPointUV *p3 = (PPointUV *)MEM_callocN(sizeof(*p3), "PPointUV");
+       PPointUV *p4 = (PPointUV *)MEM_callocN(sizeof(*p4), "PPointUV");
+
+       /* reference point for item hull is the one with the lowest y value*/
+       
+       float bounds_height = 1.0f; /* ToDo Saphires: Aspect Ratio compensation 
*/
+       float bounds_width = 1.0f; /* ToDo Saphires: Aspect Ratio compensation 
*/
+       
+       p1->x = item->h_verts[item->ref_vert_index]->uv[0] - item->min_v[0];
+       p1->y = 0.0f;
+       nfp->final_pos[0] = p1;
+
+       p2->x = p1->x;
+       p2->y = bounds_height - (item->max_v[1] - item->min_v[1]); /* ToDo 
Saphires: ConvexHull should store relative bounds (width/height) ?*/
+       nfp->final_pos[0] = p2;
+
+       p3->x = bounds_width - (item->max_v[0] - item->min_v[0] - 
(item->h_verts[item->ref_vert_index]->uv[0] - item->min_v[0]));
+       p3->y = p2->y;
+       nfp->final_pos[0] = p3;
+
+       p4->x = p3->x;
+       p4->y = 0.0f;
+       nfp->final_pos[0] = p4;
+
+       return nfp;
+}
+
 PNoFitPolygon *p_no_fit_polygon_create(PConvexHull *item, PConvexHull *fixed)
 {
        PNoFitPolygon *nfp = (PNoFitPolygon *)MEM_callocN(sizeof(*nfp), 
"PNoFitPolygon");

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to