Mercurial > octave-nkf
diff src/graphics.cc @ 13756:6dfebfa334cb
allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
* mx-inlines.cc (mx_inline_any_positive): New function.
* lo-mappers.h (xpositive_sign (double), xpositive_sign (float)):
New functions.
* fNDArray.h, fNDArray.cc (FloatNDArray::any_element_is_positive):
New function.
* fMatrix.h, fMatrix.cc (FloatMatrix::any_element_is_positive):
New function.
* dNDArray.h, dNDArray.cc (NDArray::any_element_is_positive):
New function.
* dMatrix.h, dMatrix.cc (Matrix::any_element_is_positive):
New function.
* graphics.h.in (log_scaler::do_neg_scale): New function.
(log_scaler::scale (const Matrix&) const,
log_scaler::scale (const NDArray&) const): Call do_neg_scale if no
array elements are positive.
* graphics.cc (axes::properties::get_axis_limits): Omit zero from
positive values for log plots. Correctly widen range for all negative
log plots.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 26 Oct 2011 14:19:54 -0400 |
parents | deb69dab4514 |
children | 1e81e2e30af3 |
line wrap: on
line diff
--- a/src/graphics.cc Wed Oct 26 07:44:55 2011 -0400 +++ b/src/graphics.cc Wed Oct 26 14:19:54 2011 -0400 @@ -5568,7 +5568,7 @@ retval(1) = pow (10., retval(1)); return retval; } - if ((min_val <= 0 && max_val >= 0)) + if ((min_val <= 0 && max_val > 0)) { warning ("axis: omitting nonpositive data in log plot"); min_val = min_pos; @@ -5588,8 +5588,8 @@ else { // Log plots with all negative data - min_val = -pow (10, gnulib::floor (log10 (-min_val))); - max_val = -pow (10, std::ceil (log10 (-max_val))); + min_val = -pow (10, std::ceil (log10 (-min_val))); + max_val = -pow (10, gnulib::floor (log10 (-max_val))); } } else