diff options
| author | bulia byak <buliabyak@gmail.com> | 2006-04-25 02:31:04 +0000 |
|---|---|---|
| committer | buliabyak <buliabyak@users.sourceforge.net> | 2006-04-25 02:31:04 +0000 |
| commit | 2ec26e71bbc4bed23c3ce990081120a6ad7c942d (patch) | |
| tree | 4ac610c8467015b1f37192283b76c233ec14485c /src/svg/svg-length.cpp | |
| parent | revert 11172, synthesized events are used to update controls spinbuttons (diff) | |
| download | inkscape-2ec26e71bbc4bed23c3ce990081120a6ad7c942d.tar.gz inkscape-2ec26e71bbc4bed23c3ce990081120a6ad7c942d.zip | |
limit the smallest exponent in transforms; anything smaller is written as 0
(bzr r583)
Diffstat (limited to 'src/svg/svg-length.cpp')
| -rw-r--r-- | src/svg/svg-length.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/svg/svg-length.cpp b/src/svg/svg-length.cpp index 102d7b74c..63af37665 100644 --- a/src/svg/svg-length.cpp +++ b/src/svg/svg-length.cpp @@ -127,17 +127,21 @@ static unsigned sp_svg_number_write_d(gchar *buf, double val, unsigned int tprec return end_i; } -unsigned int sp_svg_number_write_de(gchar *buf, double val, unsigned int tprec, unsigned int padf) +unsigned int sp_svg_number_write_de(gchar *buf, double val, unsigned int tprec, int min_exp, unsigned int padf) { if (val == 0.0 || (fabs(val) >= 0.1 && fabs(val) < 10000000)) { return sp_svg_number_write_d(buf, val, tprec, 0, padf); } else { double eval = floor(log10(fabs(val))); - val = val / pow(10.0, eval); - int p = sp_svg_number_write_d(buf, val, tprec, 0, padf); - buf[p++] = 'e'; - p += sp_svg_number_write_i(buf + p, (int) eval); - return p; + if ((int) eval < min_exp) { + return sp_svg_number_write_d(buf, 0, tprec, 0, padf); + } else { + val = val / pow(10.0, eval); + int p = sp_svg_number_write_d(buf, val, tprec, 0, padf); + buf[p++] = 'e'; + p += sp_svg_number_write_i(buf + p, (int) eval); + return p; + } } } |
