[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49617] trunk/blender/source/blender/ editors/transform: Patch [#32246] (Bugfix): UV editor -> "Proportional edit " together with "constrain to bounds" does not work.

Daniel Genrich daniel.genrich at gmx.net
Mon Aug 6 15:40:30 CEST 2012


Revision: 49617
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49617
Author:   genscher
Date:     2012-08-06 13:40:29 +0000 (Mon, 06 Aug 2012)
Log Message:
-----------
Patch [#32246] (Bugfix): UV editor -> "Proportional edit" together with  "constrain to bounds" does not work.

Patch reviewed by Campbell Barton. Thanks!

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

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2012-08-06 13:37:25 UTC (rev 49616)
+++ trunk/blender/source/blender/editors/transform/transform.c	2012-08-06 13:40:29 UTC (rev 49617)
@@ -2932,6 +2932,14 @@
 		
 		for (i = 0, td = t->data; i < t->total; i++, td++)
 			ElementResize(t, td, mat);
+
+		/* In proportional edit it can happen that */
+		/* vertices in the radius of the brush end */
+		/* outside the clipping area               */
+		/* XXX HACK - dg */
+		if(t->flag & (T_PROP_EDIT | T_PROP_CONNECTED)) {
+			clipUVData(t);
+		}
 	}
 	
 	recalcData(t);
@@ -3787,9 +3795,18 @@
 	applyTranslation(t, t->values);
 
 	/* evil hack - redo translation if clipping needed */
-	if (t->flag & T_CLIP_UV && clipUVTransform(t, t->values, 0))
+	if (t->flag & T_CLIP_UV && clipUVTransform(t, t->values, 0)) {
 		applyTranslation(t, t->values);
 
+		/* In proportional edit it can happen that */
+		/* vertices in the radius of the brush end */
+		/* outside the clipping area               */
+		/* XXX HACK - dg */
+		if(t->flag & (T_PROP_EDIT | T_PROP_CONNECTED)) {
+			clipUVData(t);
+		}
+	}
+
 	recalcData(t);
 
 	ED_area_headerprint(t->sa, str);

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h	2012-08-06 13:37:25 UTC (rev 49616)
+++ trunk/blender/source/blender/editors/transform/transform.h	2012-08-06 13:40:29 UTC (rev 49617)
@@ -562,6 +562,7 @@
 void flushTransUVs(TransInfo *t);
 void flushTransParticles(TransInfo *t);
 int clipUVTransform(TransInfo *t, float *vec, int resize);
+void clipUVData(TransInfo *t);
 void flushTransNodes(TransInfo *t);
 void flushTransSeq(TransInfo *t);
 void flushTransTracking(TransInfo *t);

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2012-08-06 13:37:25 UTC (rev 49616)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2012-08-06 13:40:29 UTC (rev 49617)
@@ -2494,6 +2494,26 @@
 	return (clipx || clipy);
 }
 
+void clipUVData(TransInfo *t)
+{
+	TransData *td = NULL;
+	int a;
+	float aspx, aspy;
+
+	ED_space_image_get_uv_aspect(t->sa->spacedata.first, &aspx, &aspy);
+
+	for (a = 0, td = t->data; a < t->total; a++, td++) {
+		if (td->flag & TD_NOACTION)
+			break;
+
+		if ((td->flag & TD_SKIP) || (!td->loc))
+			continue;
+
+		td->loc[0] = MIN2(MAX2(0.0f, td->loc[0]), aspx);
+		td->loc[1] = MIN2(MAX2(0.0f, td->loc[1]), aspy);
+	}
+}
+
 /* ********************* ANIMATION EDITORS (GENERAL) ************************* */
 
 /* This function tests if a point is on the "mouse" side of the cursor/frame-marking */




More information about the Bf-blender-cvs mailing list