From ee6dde973112c17f528ef5ccd6341e4adc3e77c5 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Tue, 23 Jan 2018 09:46:26 +0300 Subject: [PATCH] OK In progress... --- src/Chart.vala | 8 ++++---- src/Math.vala | 8 ++++++++ src/Series.vala | 20 ++++++++++++++------ 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/Chart.vala b/src/Chart.vala index 659e425..3690874 100644 --- a/src/Chart.vala +++ b/src/Chart.vala @@ -353,10 +353,10 @@ namespace CairoChart { if (nshow == 1) joint_x = joint_y = false; for (var si = series.length - 1, nskip = 0; si >= 0; --si) - series[si].join_axes(true, si, ref nskip); + series[si].join_axes(true, ref nskip); for (var si = series.length - 1, nskip = 0; si >= 0; --si) - series[si].join_axes(false, si, ref nskip); + series[si].join_axes(false, ref nskip); } protected virtual void draw_plarea_border () { @@ -374,11 +374,11 @@ namespace CairoChart { } protected virtual void draw_haxes () { for (var si = series.length - 1, nskip = 0; si >=0; --si) - series[si].draw_horizontal_axis (si, ref nskip); + series[si].draw_horizontal_axis (ref nskip); } protected virtual void draw_vaxes () { for (var si = series.length - 1, nskip = 0; si >=0; --si) - series[si].draw_vertical_axis (si, ref nskip); + series[si].draw_vertical_axis (ref nskip); } protected virtual void draw_series () { foreach (var s in series) diff --git a/src/Math.vala b/src/Math.vala index 7289722..493da8e 100644 --- a/src/Math.vala +++ b/src/Math.vala @@ -149,5 +149,13 @@ namespace CairoChart { } return points; } + + internal int find_arr (G[] arr, G elem) { + for (var i = 0; i < arr.length; ++i) { + if (arr[i] == elem) + return i; + } + return -1; + } } } diff --git a/src/Series.vala b/src/Series.vala index 2848113..0f17e34 100644 --- a/src/Series.vala +++ b/src/Series.vala @@ -157,10 +157,9 @@ namespace CairoChart { /** * Joins equal axes. * @param is_x is this X-axis or not. - * @param si series index. * @param nskip returns number of series to skip printing. */ - public virtual void join_axes (bool is_x, int si, ref int nskip) { + public virtual void join_axes (bool is_x, ref int nskip) { Axis axis = axis_x; if (!is_x) axis = axis_y; if (!zoom_show) return; @@ -171,6 +170,9 @@ namespace CairoChart { var max_axis_font_width = axis.title.text == "" ? 0 : axis.title.width + axis.font.hspacing; var max_axis_font_height = axis.title.text == "" ? 0 : axis.title.height + axis.font.vspacing; + var si = Math.find_arr(chart.series, this); + if (si == -1) return; + if (is_x) join_relative_x_axes (si, true, ref max_rec_width, ref max_rec_height, ref max_font_spacing, ref max_axis_font_height, ref nskip); else @@ -217,11 +219,14 @@ namespace CairoChart { /** * Draws horizontal axis. - * @param si series index. * @param nskip number of series to skip printing. */ - public virtual void draw_horizontal_axis (int si, ref int nskip) { + public virtual void draw_horizontal_axis (ref int nskip) { if (!zoom_show) return; + + var si = Math.find_arr(chart.series, this); + if (si == -1) return; + if (chart.joint_x && si != chart.zoom_1st_idx) return; // 1. Detect max record width/height by axis.nrecords equally selected points using format. @@ -289,11 +294,14 @@ namespace CairoChart { /** * Draws vertical axis. - * @param si series index. * @param nskip number of series to skip printing. */ - public virtual void draw_vertical_axis (int si, ref int nskip) { + public virtual void draw_vertical_axis (ref int nskip) { if (!zoom_show) return; + + var si = Math.find_arr(chart.series, this); + if (si == -1) return; + if (chart.joint_y && si != chart.zoom_1st_idx) return; // 1. Detect max record width/height by axis.nrecords equally selected points using format. double max_rec_width, max_rec_height;