Mercurial > hg > octave-thorsten
diff src/graphics.h.in @ 13132:e3e8ca96f923
Support log scale plots with all negative data.
Front-end fix for Bug #34232.
* src/graphics.h.in: Add "max_neg" to the array_proprerty class.
* src/graphics.cc: Determine log-scale axes ticks and limits for negative
data.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Mon, 12 Sep 2011 18:53:05 -0400 (2011-09-12) |
parents | 22bc9ec80c2c |
children | 8bb526fb3349 |
line wrap: on
line diff
--- a/src/graphics.h.in +++ b/src/graphics.h.in @@ -1288,7 +1288,8 @@ public: array_property (void) : base_property ("", graphics_handle ()), data (Matrix ()), - xmin (), xmax (), xminp (), type_constraints (), size_constraints () + xmin (), xmax (), xminp (), xmaxp (), + type_constraints (), size_constraints () { get_data_limits (); } @@ -1296,7 +1297,8 @@ array_property (const std::string& nm, const graphics_handle& h, const octave_value& m) : base_property (nm, h), data (m), - xmin (), xmax (), xminp (), type_constraints (), size_constraints () + xmin (), xmax (), xminp (), xmaxp (), + type_constraints (), size_constraints () { get_data_limits (); } @@ -1306,7 +1308,7 @@ // copy constraints. array_property (const array_property& p) : base_property (p), data (p.data), - xmin (p.xmin), xmax (p.xmax), xminp (p.xminp), + xmin (p.xmin), xmax (p.xmax), xminp (p.xminp), xmaxp (p.xmaxp), type_constraints (), size_constraints () { } @@ -1321,14 +1323,16 @@ double min_val (void) const { return xmin; } double max_val (void) const { return xmax; } double min_pos (void) const { return xminp; } + double max_neg (void) const { return xmaxp; } Matrix get_limits (void) const { - Matrix m (1, 3); + Matrix m (1, 4); m(0) = min_val (); m(1) = max_val (); m(2) = min_pos (); + m(3) = max_neg (); return m; } @@ -1383,6 +1387,7 @@ double xmin; double xmax; double xminp; + double xmaxp; std::list<std::string> type_constraints; std::list<dim_vector> size_constraints; }; @@ -3645,7 +3650,9 @@ Matrix calc_tightbox (const Matrix& init_pos); public: - Matrix get_axis_limits (double xmin, double xmax, double min_pos, bool logscale); + Matrix get_axis_limits (double xmin, double xmax, + double min_pos, double max_neg, + bool logscale); void update_xlim (bool do_clr_zoom = true) { @@ -4907,7 +4914,8 @@ void do_post_event (const graphics_event& e); }; -void get_children_limits (double& min_val, double& max_val, double& min_pos, +void get_children_limits (double& min_val, double& max_val, + double& min_pos, double& max_neg, const Matrix& kids, char limit_type); OCTINTERP_API int calc_dimensions (const graphics_object& gh);