[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