Mercurial > octave
changeset 20625:974b218e7292
Display ticklabels of log axes as powers of 10 (bug #46055)
* graphics.cc (axes::properties::calc_ticklabels): use tex superscript to print powers of ten
* graphics.cc (get_ticklabel_extents): use the current ticklabelinterpreter to call get_extent
author | Pantxo Diribarne <pantxo.diribarne@gmail.com> |
---|---|
date | Sat, 26 Sep 2015 19:25:03 +0200 |
parents | 4e47e10d5279 |
children | 9fb8133288e8 |
files | libinterp/corefcn/graphics.cc |
diffstat | 1 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/graphics.cc Tue Oct 13 23:09:43 2015 +0200 +++ b/libinterp/corefcn/graphics.cc Sat Sep 26 19:25:03 2015 +0200 @@ -6946,18 +6946,24 @@ else exponent = gnulib::floor (std::log10 (values(i))); significand = values(i) * std::pow (10., -exponent); + os.str (std::string ()); - os << significand; + if ((std::abs (significand) - 1) > + std::numeric_limits<double>::epsilon()) + os << significand << "."; + else if (significand < 0) + os << "-"; + + os << "10^{"; + if (exponent < 0.0) { - os << "e-"; + os << "-"; exponent = -exponent; } - else - os << "e+"; if (exponent < 10. && (exp_max > 9 || exp_min < -9)) os << "0"; - os << exponent; + os << exponent << "}"; c(i) = os.str (); } } @@ -6996,7 +7002,8 @@ label.erase (0, label.find_first_not_of (" ")); label = label.substr (0, label.find_last_not_of (" ")+1); #ifdef HAVE_FREETYPE - ext = text_renderer.get_extent (label, 0.0, "none"); + ext = text_renderer.get_extent (label, 0.0, + get_ticklabelinterpreter ()); wmax = std::max (wmax, ext(0)); hmax = std::max (hmax, ext(1)); #else