diff --git a/src/Chart.vala b/src/Chart.vala index 202468f..fcf4c1c 100644 --- a/src/Chart.vala +++ b/src/Chart.vala @@ -242,22 +242,11 @@ namespace CairoChart { joint_x = joint_y = true; int nzoom_series_show = 0; for (var si = series.length - 1; si >=0; --si) { - var s = series[si]; + var s = series[si], s0 = series[0]; if (!s.zoom_show) continue; ++nzoom_series_show; - if ( s.axis_x.position != series[0].axis_x.position - || s.axis_x.zoom_min != series[0].axis_x.zoom_min - || s.axis_x.zoom_max != series[0].axis_x.zoom_max - || s.place.zoom_x_min != series[0].place.zoom_x_min - || s.place.zoom_x_max != series[0].place.zoom_x_max - || s.axis_x.type != series[0].axis_x.type) - joint_x = false; - if ( s.axis_y.position != series[0].axis_y.position - || s.axis_y.zoom_min != series[0].axis_y.zoom_min - || s.axis_y.zoom_max != series[0].axis_y.zoom_max - || s.place.zoom_y_min != series[0].place.zoom_y_min - || s.place.zoom_y_max != series[0].place.zoom_y_max) - joint_y = false; + if (!s.equal_x_axis(s0)) joint_x = false; + if (!s.equal_y_axis(s0)) joint_y = false; } if (nzoom_series_show == 1) joint_x = joint_y = false; diff --git a/src/Series.vala b/src/Series.vala index 8d9e60f..1060e30 100644 --- a/src/Series.vala +++ b/src/Series.vala @@ -85,5 +85,29 @@ namespace CairoChart { marker.draw_at_pos(chart, x, y); } } + + public virtual bool equal_x_axis (Series s) { + if ( axis_x.position != s.axis_x.position + || axis_x.zoom_min != s.axis_x.zoom_min + || axis_x.zoom_max != s.axis_x.zoom_max + || place.zoom_x_min != s.place.zoom_x_min + || place.zoom_x_max != s.place.zoom_x_max + || axis_x.type != s.axis_x.type + ) + return false; + return true; + } + + public virtual bool equal_y_axis (Series s) { + if ( axis_y.position != s.axis_y.position + || axis_y.zoom_min != s.axis_y.zoom_min + || axis_y.zoom_max != s.axis_y.zoom_max + || place.zoom_y_min != s.place.zoom_y_min + || place.zoom_y_max != s.place.zoom_y_max + || axis_y.type != s.axis_y.type + ) + return false; + return true; + } } }