[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