# HG changeset patch # User Pantxo Diribarne # Date 1443288303 -7200 # Node ID 974b218e7292f42f77f118159995eec3608c96ef # Parent 4e47e10d52793dd72556b7fdea07a3134a985024 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 diff -r 4e47e10d5279 -r 974b218e7292 libinterp/corefcn/graphics.cc --- 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::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