# HG changeset patch # User Ben Abbott # Date 1301439626 14400 # Node ID 570193964185b2d4454cb634a48da90a255a126c # Parent 2ba9478f65204419ac16712d2320a8492d8dc590 graphics.cc: Prevent ticks from being cropped. diff -r 2ba9478f6520 -r 570193964185 src/ChangeLog --- a/src/ChangeLog Tue Mar 29 07:57:51 2011 -0600 +++ b/src/ChangeLog Tue Mar 29 19:00:26 2011 -0400 @@ -1,3 +1,8 @@ +2011-03-29 Ben Abbott + + * graphics.cc: Prevent ticks from being cropped by round-off errors + when limmode == auto (bug #32701). + 2011-03-28 Rik * DLD-FUNCTIONS/inv.cc (inv, inverse), DLD-FUNCTIONS/tril.cc (tril), diff -r 2ba9478f6520 -r 570193964185 src/graphics.cc --- a/src/graphics.cc Tue Mar 29 07:57:51 2011 -0600 +++ b/src/graphics.cc Tue Mar 29 19:00:26 2011 -0400 @@ -5082,8 +5082,11 @@ } double tick_sep = calc_tick_sep (min_val , max_val); - min_val = tick_sep * gnulib::floor (min_val / tick_sep); - max_val = tick_sep * std::ceil (max_val / tick_sep); + double min_tick = gnulib::floor (min_val / tick_sep); + double max_tick = std::ceil (max_val / tick_sep); + // Prevent round-off from cropping ticks + min_val = std::min (min_val, tick_sep * min_tick); + max_val = std::max (max_val, tick_sep * max_tick); } } @@ -5132,8 +5135,8 @@ { // adjust limits to include min and max tics Matrix tmp_lims (1,2); - tmp_lims(0) = tick_sep * i1; - tmp_lims(1) = tick_sep * i2; + tmp_lims(0) = std::min (tick_sep * i1, lo); + tmp_lims(1) = std::max (tick_sep * i2, hi); if (is_logscale) {