[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58339] trunk/blender/source/blender: fix [#36176] Connected font Bevel moves inwards for some letter combinations

Campbell Barton ideasman42 at gmail.com
Wed Jul 17 16:05:50 CEST 2013


Revision: 58339
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58339
Author:   campbellbarton
Date:     2013-07-17 14:05:50 +0000 (Wed, 17 Jul 2013)
Log Message:
-----------
fix [#36176] Connected font Bevel moves inwards for some letter combinations
bevel wasn't taking into account overlapping text (bug goes back to 1.8).

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/curve.c
    trunk/blender/source/blender/makesdna/DNA_curve_types.h

Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c	2013-07-17 12:57:03 UTC (rev 58338)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c	2013-07-17 14:05:50 UTC (rev 58339)
@@ -2323,6 +2323,7 @@
 			bl = MEM_callocN(sizeof(BevList) + 1 * sizeof(BevPoint), "makeBevelList1");
 			BLI_addtail(&(cu->bev), bl);
 			bl->nr = 0;
+			bl->charidx = nu->charidx;
 		}
 		else {
 			if (G.is_rendering && cu->resolu_ren != 0)
@@ -2335,10 +2336,10 @@
 				bl = MEM_callocN(sizeof(BevList) + len * sizeof(BevPoint), "makeBevelList2");
 				BLI_addtail(&(cu->bev), bl);
 
-				if (nu->flagu & CU_NURB_CYCLIC) bl->poly = 0;
-				else bl->poly = -1;
+				bl->poly = (nu->flagu & CU_NURB_CYCLIC) ? 0 : -1;
 				bl->nr = len;
 				bl->dupe_nr = 0;
+				bl->charidx = nu->charidx;
 				bevp = (BevPoint *)(bl + 1);
 				bp = nu->bp;
 
@@ -2358,8 +2359,8 @@
 				bl = MEM_callocN(sizeof(BevList) + len * sizeof(BevPoint), "makeBevelBPoints");
 				BLI_addtail(&(cu->bev), bl);
 
-				if (nu->flagu & CU_NURB_CYCLIC) bl->poly = 0;
-				else bl->poly = -1;
+				bl->poly = (nu->flagu & CU_NURB_CYCLIC) ? 0 : -1;
+				bl->charidx = nu->charidx;
 				bevp = (BevPoint *)(bl + 1);
 
 				a = nu->pntsu - 1;
@@ -2445,8 +2446,8 @@
 					BLI_addtail(&(cu->bev), bl);
 					bl->nr = len;
 					bl->dupe_nr = 0;
-					if (nu->flagu & CU_NURB_CYCLIC) bl->poly = 0;
-					else bl->poly = -1;
+					bl->poly = (nu->flagu & CU_NURB_CYCLIC) ? 0 : -1;
+					bl->charidx = nu->charidx;
 					bevp = (BevPoint *)(bl + 1);
 
 					BKE_nurb_makeCurve(nu, &bevp->vec[0],
@@ -2572,9 +2573,11 @@
 			bl = sd->bl;     /* is bl a hole? */
 			sd1 = sortdata + (a - 1);
 			for (b = a - 1; b >= 0; b--, sd1--) { /* all polys to the left */
-				if (bevelinside(sd1->bl, bl)) {
-					bl->hole = 1 - sd1->bl->hole;
-					break;
+				if (sd1->bl->charidx == bl->charidx) { /* for text, only check matching char */
+					if (bevelinside(sd1->bl, bl)) {
+						bl->hole = 1 - sd1->bl->hole;
+						break;
+					}
 				}
 			}
 		}

Modified: trunk/blender/source/blender/makesdna/DNA_curve_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_curve_types.h	2013-07-17 12:57:03 UTC (rev 58338)
+++ trunk/blender/source/blender/makesdna/DNA_curve_types.h	2013-07-17 14:05:50 UTC (rev 58339)
@@ -75,6 +75,7 @@
 	struct BevList *next, *prev;
 	int nr, dupe_nr;
 	int poly, hole;
+	int charidx;
 } BevList;
 
 /* These two Lines with # tell makesdna this struct can be excluded. */




More information about the Bf-blender-cvs mailing list