diff options
author | Ramil Roosileht <Limarest> | 2022-06-10 12:15:47 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2022-06-10 12:17:14 +0300 |
commit | 9670c649d86cbc6a54967b5cb91d745595f0884c (patch) | |
tree | 369f6274b6393852b5c23e76e21598da2077b4e4 /source/blender/blenkernel | |
parent | a24a28db7b00551effcce2fb7d6de9b3fcdd05c5 (diff) |
Fix regression in the recent unit system change
Resolves unit tests failure since the D15085.
Also addressed API documentation and formatting format.
Differential Revision: https://developer.blender.org/D15162
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_unit.h | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/unit.c | 16 |
2 files changed, 12 insertions, 8 deletions
diff --git a/source/blender/blenkernel/BKE_unit.h b/source/blender/blenkernel/BKE_unit.h index 823d32f83ba..f051335fc41 100644 --- a/source/blender/blenkernel/BKE_unit.h +++ b/source/blender/blenkernel/BKE_unit.h @@ -19,6 +19,10 @@ struct UnitSettings; */ size_t BKE_unit_value_as_string_adaptive( char *str, int len_max, double value, int prec, int system, int type, bool split, bool pad); +/** + * Representation of a value in units. Negative precision is used to disable stripping of zeroes. + * This reduces text jumping when changing values. + */ size_t BKE_unit_value_as_string(char *str, int len_max, double value, diff --git a/source/blender/blenkernel/intern/unit.c b/source/blender/blenkernel/intern/unit.c index 557fb2568fe..b31632f0234 100644 --- a/source/blender/blenkernel/intern/unit.c +++ b/source/blender/blenkernel/intern/unit.c @@ -462,11 +462,6 @@ static size_t unit_as_string(char *str, double value_conv = (value / unit->scalar) - unit->bias; bool strip_skip = false; - /* Adjust precision to expected number of significant digits. - * Note that here, we shall not have to worry about very big/small numbers, units are expected - * to replace 'scientific notation' in those cases. */ - prec -= integer_digits_d(value_conv); - /* Negative precision is used to disable stripping of zeroes. * This reduces text jumping when changing values. */ if (prec < 0) { @@ -474,6 +469,11 @@ static size_t unit_as_string(char *str, prec *= -1; } + /* Adjust precision to expected number of significant digits. + * Note that here, we shall not have to worry about very big/small numbers, units are expected + * to replace 'scientific notation' in those cases. */ + prec -= integer_digits_d(value_conv); + CLAMP(prec, 0, 6); /* Convert to a string. */ @@ -491,10 +491,10 @@ static size_t unit_as_string(char *str, while (i > 0 && str[i] == '0') { /* 4.300 -> 4.3 */ str[i--] = pad; } - } - if (i > 0 && str[i] == '.') { /* 10. -> 10 */ - str[i--] = pad; + if (i > 0 && str[i] == '.') { /* 10. -> 10 */ + str[i--] = pad; + } } } |