[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18356] branches/blender2.5/blender/source /blender/editors/transform: 2.5

Martin Poirier theeth at yahoo.com
Tue Jan 6 03:27:11 CET 2009


Revision: 18356
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18356
Author:   theeth
Date:     2009-01-06 03:27:07 +0100 (Tue, 06 Jan 2009)

Log Message:
-----------
2.5

Transform Numeric Input: Inverse

Press "/" to toggle inverse value (1/N).
Makes it easy to scale down by specific values (you can just type S / 7 to scale down by 7, for example).
This doesn't give full fraction input (X/Y).

Suggestion from a talk with Gwenouille on ba.org

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/transform/transform.h
    branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.h	2009-01-06 01:37:12 UTC (rev 18355)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.h	2009-01-06 02:27:07 UTC (rev 18356)
@@ -62,8 +62,9 @@
     short  idx;
     short  idx_max;
     short  flag;        /* Different flags to indicate different behaviors                                */
-    float  val[3];       /* Direct value of the input                                                      */
-    int  ctrl[3];      /* Control to indicate what to do with the numbers that are typed                 */
+    char   inv[3];      /* If the value is inverted or not                                                */
+    float  val[3];      /* Direct value of the input                                                      */
+    int    ctrl[3];     /* Control to indicate what to do with the numbers that are typed                 */
 } NumInput ;
 
 /*

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c	2009-01-06 01:37:12 UTC (rev 18355)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c	2009-01-06 02:27:07 UTC (rev 18356)
@@ -46,6 +46,9 @@
 	n->flag		=
 	n->idx		=
 	n->idx_max	=
+	n->inv[0]   =
+	n->inv[1]   =
+	n->inv[2]   =
 	n->ctrl[0]	= 
 	n->ctrl[1]	= 
 	n->ctrl[2]	= 0;
@@ -58,6 +61,7 @@
 void outputNumInput(NumInput *n, char *str)
 {
 	char cur;
+	char inv[] = "1/";
 	short i, j;
 
 	for (j=0; j<=n->idx_max; j++) {
@@ -72,35 +76,40 @@
 		else
 			cur = '|';
 
+		if (n->inv[i])
+			inv[0] = '1';
+		else
+			inv[0] = 0;
+
 		if( n->val[i] > 1e10 || n->val[i] < -1e10 )
-			sprintf(&str[j*20], "%.4e%c", n->val[i], cur);
+			sprintf(&str[j*20], "%s%.4e%c", inv, n->val[i], cur);
 		else
 			switch (n->ctrl[i]) {
 			case 0:
-				sprintf(&str[j*20], "NONE%c", cur);
+				sprintf(&str[j*20], "%sNONE%c", inv, cur);
 				break;
 			case 1:
 			case -1:
-				sprintf(&str[j*20], "%.0f%c", n->val[i], cur);
+				sprintf(&str[j*20], "%s%.0f%c", inv, n->val[i], cur);
 				break;
 			case 10:
 			case -10:
-				sprintf(&str[j*20], "%.f.%c", n->val[i], cur);
+				sprintf(&str[j*20], "%s%.f.%c", inv, n->val[i], cur);
 				break;
 			case 100:
 			case -100:
-				sprintf(&str[j*20], "%.1f%c", n->val[i], cur);
+				sprintf(&str[j*20], "%s%.1f%c", inv, n->val[i], cur);
 				break;
 			case 1000:
 			case -1000:
-				sprintf(&str[j*20], "%.2f%c", n->val[i], cur);
+				sprintf(&str[j*20], "%s%.2f%c", inv, n->val[i], cur);
 				break;
 			case 10000:
 			case -10000:
-				sprintf(&str[j*20], "%.3f%c", n->val[i], cur);
+				sprintf(&str[j*20], "%s%.3f%c", inv, n->val[i], cur);
 				break;
 			default:
-				sprintf(&str[j*20], "%.4e%c", n->val[i], cur);
+				sprintf(&str[j*20], "%s%.4e%c", inv, n->val[i], cur);
 			}
 	}
 }
@@ -139,7 +148,14 @@
 				vec[j] = 0.0001f;
 			}
 			else {
-				vec[j] = val[i];
+				if (n->inv[i])
+				{
+					vec[j] = 1.0f / val[i];
+				}
+				else
+				{
+					vec[j] = val[i];
+				}
 			}
 		}
 	}
@@ -159,10 +175,14 @@
 			n->ctrl[0]		= 
 				n->ctrl[1]	= 
 				n->ctrl[2]	= 0;
+			n->inv[0]		= 
+				n->inv[1]	= 
+				n->inv[2]	= 0;
 		}
 		else {
 			n->val[idx] = 0.0f;
 			n->ctrl[idx] = 0;
+			n->inv[idx] = 0;
 		}
 		break;
 	case PERIODKEY:
@@ -194,6 +214,10 @@
 		else
 			n->ctrl[idx] = -1;
 		break;
+	case PADSLASHKEY:
+	case SLASHKEY:
+		n->inv[idx] = !n->inv[idx];
+		break;
 	case TABKEY:
 		idx++;
 		if (idx > idx_max)





More information about the Bf-blender-cvs mailing list