[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50792] trunk/blender/source/blender/ editors/transform/transform.c: Mask Editor: make Alt+S feather shrink/ fatten work better when no feather was

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Sep 21 14:18:14 CEST 2012


Revision: 50792
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50792
Author:   blendix
Date:     2012-09-21 12:18:14 +0000 (Fri, 21 Sep 2012)
Log Message:
-----------
Mask Editor: make Alt+S feather shrink/fatten work better when no feather was
defined yet, previously would just stick to original curve then.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform.c

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2012-09-21 11:37:51 UTC (rev 50791)
+++ trunk/blender/source/blender/editors/transform/transform.c	2012-09-21 12:18:14 UTC (rev 50792)
@@ -4091,9 +4091,9 @@
 
 int MaskShrinkFatten(TransInfo *t, const int UNUSED(mval[2]))
 {
-	TransData *td = t->data;
+	TransData *td;
 	float ratio;
-	int i;
+	int i, initial_feather = FALSE;
 	char str[50];
 
 	ratio = t->values[0];
@@ -4107,13 +4107,30 @@
 		char c[NUM_STR_REP_LEN];
 
 		outputNumInput(&(t->num), c);
-		sprintf(str, "Shrink/Fatten: %s", c);
+		sprintf(str, "Feather Shrink/Fatten: %s", c);
 	}
 	else {
-		sprintf(str, "Shrink/Fatten: %3f", ratio);
+		sprintf(str, "Feather Shrink/Fatten: %3f", ratio);
 	}
 
-	for (i = 0; i < t->total; i++, td++) {
+	/* detect if no points have feather yet */
+	if (ratio > 1.0f) {
+		initial_feather = TRUE;
+
+		for (td = t->data, i = 0; i < t->total; i++, td++) {
+			if (td->flag & TD_NOACTION)
+				break;
+
+			if (td->flag & TD_SKIP)
+				continue;
+
+			if (td->ival >= 0.001f)
+				initial_feather = FALSE;
+		}
+	}
+
+	/* apply shrink/fatten */
+	for (td = t->data, i = 0; i < t->total; i++, td++) {
 		if (td->flag & TD_NOACTION)
 			break;
 
@@ -4121,7 +4138,11 @@
 			continue;
 
 		if (td->val) {
-			*td->val = td->ival * ratio;
+			if (initial_feather)
+				*td->val = td->ival + (ratio - 1.0f) * 0.01f;
+			else
+				*td->val = td->ival * ratio;
+
 			/* apply PET */
 			*td->val = (*td->val * td->factor) + ((1.0f - td->factor) * td->ival);
 			if (*td->val <= 0.0f) *td->val = 0.001f;




More information about the Bf-blender-cvs mailing list