[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59855] trunk/blender/source/blender: rename positive_mod to mod_i, make it work with nagative numbers ( matching pythons modulo), and use in a few more places.

Campbell Barton ideasman42 at gmail.com
Thu Sep 5 22:54:32 CEST 2013


Revision: 59855
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59855
Author:   campbellbarton
Date:     2013-09-05 20:54:32 +0000 (Thu, 05 Sep 2013)
Log Message:
-----------
rename positive_mod to mod_i, make it work with nagative numbers (matching pythons modulo), and use in a few more places.

allow mesh-checker-deselect to have a negative offset.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/anim.c
    trunk/blender/source/blender/blenlib/BLI_math_base.h
    trunk/blender/source/blender/blenlib/intern/math_base_inline.c
    trunk/blender/source/blender/bmesh/intern/bmesh_edgeloop.c
    trunk/blender/source/blender/bmesh/operators/bmo_bridge.c
    trunk/blender/source/blender/editors/mesh/editmesh_select.c
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c

Modified: trunk/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim.c	2013-09-05 19:56:49 UTC (rev 59854)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c	2013-09-05 20:54:32 UTC (rev 59855)
@@ -594,8 +594,7 @@
 static int interval_test(const int min, const int max, int p1, const int cycl)
 {
 	if (cycl) {
-		if      (p1 < min) p1 = ((p1 - min) % (max - min + 1)) + max + 1;
-		else if (p1 > max) p1 = ((p1 - min) % (max - min + 1)) + min;
+		p1 = mod_i(p1 - min, (max - min + 1)) + min;
 	}
 	else {
 		if      (p1 < min) p1 = min;

Modified: trunk/blender/source/blender/blenlib/BLI_math_base.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_math_base.h	2013-09-05 19:56:49 UTC (rev 59854)
+++ trunk/blender/source/blender/blenlib/BLI_math_base.h	2013-09-05 20:54:32 UTC (rev 59855)
@@ -222,7 +222,7 @@
 MINLINE int power_of_2_min_i(int n);
 
 MINLINE int divide_round_i(int a, int b);
-MINLINE int positive_mod(int i, int n);
+MINLINE int mod_i(int i, int n);
 
 MINLINE float shell_angle_to_dist(const float angle);
 

Modified: trunk/blender/source/blender/blenlib/intern/math_base_inline.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_base_inline.c	2013-09-05 19:56:49 UTC (rev 59854)
+++ trunk/blender/source/blender/blenlib/intern/math_base_inline.c	2013-09-05 20:54:32 UTC (rev 59855)
@@ -153,9 +153,12 @@
 	return (2 * a + b) / (2 * b);
 }
 
-MINLINE int positive_mod(int i, int n)
+/**
+ * modulo that handles negative numbers, works the same as Python's.
+ */
+MINLINE int mod_i(int i, int n)
 {
-	return ((i = i % n) < 0) ? i + n : i;
+	return (i % n + n) % n;
 }
 
 MINLINE unsigned int highest_order_bit_i(unsigned int n)

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_edgeloop.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_edgeloop.c	2013-09-05 19:56:49 UTC (rev 59854)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_edgeloop.c	2013-09-05 20:54:32 UTC (rev 59855)
@@ -230,7 +230,7 @@
 					/* on the same side - do nothing */
 				}
 				else {
-					/* we have met out match! (vertices from differnt sides meet) */
+					/* we have met out match! (vertices from different sides meet) */
 					if (dir == 1) {
 						v_match[0] = vs->v;
 						v_match[1] = v_next;

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bridge.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bridge.c	2013-09-05 19:56:49 UTC (rev 59854)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bridge.c	2013-09-05 20:54:32 UTC (rev 59855)
@@ -273,7 +273,7 @@
 		if (twist_offset != 0) {
 			const int len_b = BM_edgeloop_length_get(el_store_b);
 			ListBase *lb_b = BM_edgeloop_verts_get(el_store_b);
-			LinkData *el_b = BLI_rfindlink(lb_b, positive_mod(twist_offset, len_b));
+			LinkData *el_b = BLI_rfindlink(lb_b, mod_i(twist_offset, len_b));
 			BLI_rotatelist_first(lb_b, el_b);
 		}
 	}

Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-09-05 19:56:49 UTC (rev 59854)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-09-05 20:54:32 UTC (rev 59855)
@@ -2510,7 +2510,7 @@
 	int offset = RNA_int_get(op->ptr, "offset");
 
 	/* so input of offset zero ends up being (nth - 1) */
-	offset = (offset + (nth - 1)) % nth;
+	offset = mod_i(offset, nth);
 
 	if (edbm_deselect_nth(em, nth, offset) == false) {
 		BKE_report(op->reports, RPT_ERROR, "Mesh has no active vert/edge/face");
@@ -2538,7 +2538,7 @@
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
 	RNA_def_int(ot->srna, "nth", 2, 2, INT_MAX, "Nth Selection", "", 2, 100);
-	RNA_def_int(ot->srna, "offset", 0, 0, INT_MAX, "Offset", "", 0, 100);
+	RNA_def_int(ot->srna, "offset", 0, INT_MIN, INT_MAX, "Offset", "", -100, 100);
 }
 
 void em_setup_viewcontext(bContext *C, ViewContext *vc)

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-09-05 19:56:49 UTC (rev 59854)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-09-05 20:54:32 UTC (rev 59855)
@@ -2959,7 +2959,7 @@
 		RNA_property_int_set(op->ptr, prop_span, span);
 
 		offset = RNA_property_int_get(op->ptr, prop_offset);
-		offset = positive_mod(offset, clamp);
+		offset = mod_i(offset, clamp);
 
 		/* in simple cases, move selection for tags, but also support more advanced cases */
 		edbm_fill_grid_prepare(em->bm, span, offset);




More information about the Bf-blender-cvs mailing list